在本地安装 8th

了解如何在本地安装 8th,从而在自己的电脑上完成 Exercism 的练习


安装 8th

8th 以全包式 ZIP 文件的形式发布,其中包含了你所下载版本支持的所有平台的 8th。你的 8th 授权专门授予你本人,不得分享。

获取 zip 文件

从 Get 8th 页面开始,

  • 在表单中填写你的姓名和邮箱,并选择 Free 版本。你必须接受 8th 许可协议。
  • 8th-dev 会给你发一封邮件来验证你的身份。点击注册邮件中的链接。
  • 8th-dev 会为你生成一个专属的 zip 文件,并就此给你发一封邮件。在那封邮件里找到“download here”链接。

安装

要使用 8th,你需要把 zip 文件解压到任何你能访问的文件夹中。

zip 中包含若干文件夹:

文件夹 说明
bin 适用于所有受支持平台的 8th 可执行文件
docs 手册和教程
libs 8th 支持库(8th 代码)
samples 作为教程和手册补充的示例代码
keys 包含你的密钥和注册信息的 'id.blob'

Pro+ 用户请注意:id.blob 中的加密密钥对你下载的每个具体 8th 版本都是唯一的,它们对于构建加密的、可部署的应用程序非常重要。如果你把 8th 移到它的发行包之外,它就找不到 id.blob,这时如果你执行 8th -v,它会报告 custid: id.blob?,提醒你它找不到身份信息。

无论你在哪个平台上开发,都可以为 8th 支持的任何平台生成应用程序。

解压 zip 文件后,你就可以直接运行 8th 了。例如,如果你在 64 位 Linux 上把它安装到 /opt/8th,那么你应该可以输入 /opt/8th/bin/lin64/8th 并附带任意参数,它应该能正常工作。在 macOS 或 Windows 上也类似。

把 8th 可执行文件所在的文件夹添加到系统的 PATH 环境变量中,你就可以直接输入 8th,而不用输入它的完整路径。

使用 8th

8th 本身是一个命令行程序,它并不是为通过点击桌面图标来启动而设计的。你可以用它编写可以通过那种方式启动的普通 GUI 程序,但 8th 编译器本身是一个 CLI(命令行)程序。

如果你在 Windows 上运行,并且使用 MSys 或 Cygwin shell,那么你可能还需要使用免费的 winpty 程序,才能让控制台模式程序正常工作。较新版本的 Windows 10 似乎不再需要这样做。

如果你在 MacOS 上运行,请阅读这个 8th 论坛帖子。

8th 命令行看起来像这样:

8th [options] [[-f] file...] [-e 'code'...]

其中 [-f] file 选项表示“解释该文件的内容”,-e code 表示“解释那段特定的 8th 代码”。这两个选项都可以在命令行上多次给出,效果会累加。也就是说:

8th -f first.8th -f second.8th

会先解释文件 first.8th 的内容,然后解释文件 second.8th 的内容。注意,如果你只想运行一个 8th 文件,不必写成 8th -f first.8th,直接输入 8th first.8th 即可。

以下是 8th 能理解的所有 CLI 选项:

选项 说明
-b 调用 bin/build 工具
-D dir 把主目录设为 dir(默认值取决于操作系统)
-e str 把字符串 str 当作 8th 代码来解释
-ee str 把字符串 str 当作 8th 代码来解释,随后退出
-f nm 解释名为 nm 的文件
-g 启用 SED 调试/检查
-G 设置所需的 GL 版本(例如 3.1)
-h 显示帮助
-H N 把控制台历史记录大小设为 N 行(默认:100)
-k N 把数据栈和 r 栈的大小设为 N 项(默认:128K)
-l 更多调试信息
-r N 把回调数据栈大小设为 N 项(默认:256)
-s N 把递归栈大小设为 N 字节(默认:0,表示使用系统默认值)
-S 列出检测到的 SDL 驱动,然后退出
-v 打印 8th 版本并退出
-vv 与 -v 相同,但附带用于调试的额外信息
-x 关闭栈类型和边界检查
-z 开启数据项计数
-Z 类似 -z,但会包含 'debug/allocs' 库
-? nm 打印项目 'nm' 的帮助
-- 表示 8th 选项结束

一般来说,你不需要使用 -k、-r 或 -s 选项;提供它们是为了以防你觉得有用,例如当栈上一次容纳 128K 项太少时(说实话,如果是这种情况,你应该改改你的算法……)。

如果你发现自己经常使用命令行开关,可以直接用一个“shell 脚本”(在 macOS 或 Linux 上)或一个“批处理文件”(在 Windows 上,也叫“命令文件”)来以你偏好的选项启动 8th。

你也可以在 app:datadir 文件夹中创建一个名为 settings.8th 的 8th 源文件。如果它存在,8th REPL 会在启动时加载它,并打印一条相应的消息。出于安全原因,打包后的应用不会查找或加载该文件。

要退出 8th,可以执行以下任一操作:

  • 输入 bye 并按 ENTER。这会让 8th 正常退出。
  • 输入 1 die 并按 ENTER。这会让 8th 异常退出,并向操作系统返回状态码 1。
  • 快速连续按两次 Ctrl+C 键,或按一次 Ctrl+D。两者都会让 8th 立即退出。
  • 在正在运行的应用程序中,调用 throw 会引发异常。如果你是从 8th 控制台运行的,大多数情况下会被带回控制台;如果你运行的是一个文件或一个打包应用,则会打印一条消息并终止该应用。

运行 8th 程序

8th 可以用几种模式运行你的程序:

模式 说明
interactive 直接启动 8th,在控制台中输入你的代码
script 把你的代码放进一个文本文件,用 8th mycode.8th(例如)来运行。见下面的提示……
app 使用 build 脚本(或 -b CLI 选项)把你的代码转换成打包应用

Pro+ 用户:你可以创建加密应用,以帮助阻止黑客和其他不法分子。

在后两种情况下,你的代码必须放在纯文本文件中(例如,不是文字处理软件的格式)。任何辅助文件都应放在与代码相同的文件夹或其子文件夹中。你可以在 8th 中通过调用 app:asset 来访问这些其他文件。

“app”是一个独立程序,像目标平台上的任何其他程序一样独立运行,不需要通过命令行由 8th 来运行。如上所述,其内容可以加密,以帮助阻止黑客。制作独立应用的详细信息可以在使用 build 工具的那一节中找到。

提示:如果你在 macOS、Linux 或 RPI 系统上运行,可以通过以下方式让你的脚本像普通系统命令一样运行:

  • 让文件可执行:chmod +x scriptname
  • 把代码的第一行写成:#! /usr/bin/env 8th
  • 确保 PATH 中有一个相关的 8th 可执行文件

这对打包后的 appdata 也同样适用,所以如果你用 bin/build 创建了一个可执行文件,也可以用同样的方式使用它生成的 appdata:

cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata