了解如何在本地安装 8th,从而在自己的电脑上完成 Exercism 的练习
8th 以全包式 ZIP 文件的形式发布,其中包含了你所下载版本支持的所有平台的 8th。你的 8th 授权专门授予你本人,不得分享。
从 Get 8th 页面开始,
要使用 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 本身是一个命令行程序,它并不是为通过点击桌面图标来启动而设计的。你可以用它编写可以通过那种方式启动的普通 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。throw 会引发异常。如果你是从 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
这对打包后的 appdata 也同样适用,所以如果你用 bin/build 创建了一个可执行文件,也可以用同样的方式使用它生成的 appdata:
cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata