Inko 0.8.1 发布

2020年10月06日

Inko 0.8.1 已经发布了,提供了运行Inko字节码的新方法,减少了依赖,以及简化了构建和安装过程。

内容列表

  • 重用垃圾回收线程
  • 字节码文件(Bytecode files)被字节码映像(Bytecode images)取代
  • “持续时间”方法的重命名
  • 翻新构建系统
  • 不再有预编译包
  • 翻新CLI
  • 减少依赖
  • 使用AES-NI加快哈希处理
  • 文档修改
  • Arch Linux 包
  • Homebrew 格式

有关更改的完整列表,请看更改日志

如果您想支持 Inko的发展,请通过Github赞助商赞助商向Inko捐赠。

注意: 此版本对构建系统进行更改。如果使用ienv管理Inko的安装,则需要先升级 ienv,然后才能安装 0.8.1。

重用垃圾回收线程

Inko 执行并行垃圾回收,这意味着多个线程用于垃圾回收进程。在版本 0.8.1 之前,每当执行垃圾回收时,Inko 都会生成这些线程。从 0.8.1 开始,这些线程将引发VM 启动并重新使用。这将减少垃圾收集过程所花费的总时间。

有关详细信息请看合并请求

 

字节码文件(Bytecode files)被字节码映像(Bytecode images)取代

在版本 0.8.1 之前,Inko 的编译器将生成每个源文件的字节码文件。每当必须导入模块时,VM 都会加载这些字节码文件。从 Inko 0.8.1 开始,编译器将生成一个称为"字节码映像"的字节码文件。此文件包含运行应用程序所需的所有字节码,与JAR非常相同。VM 不再按需加载单个字节码文件,而是运行此字节码映像。

这减少了加载模块所需的磁盘 IO 量,并允许 VM 并行分析此字节码映像中的模块。由于只需分发单个字节码文件,因此分发也变得更容易。

并行模块解析对小型和大型项目都很有用,有助于尽可能降低启动时间。例如,运行一个空的 Inko 程序只需要大约 5 毫秒。相比之下,一个空 Ruby 2.6.6 程序至少需要 45 毫秒,一个空 Python 3.8.5 程序至少需要 15 毫秒。当然,空程序没有用处,但这给出了基本启动开销的想法 。

有关详细信息请看合并请求

 

“持续时间”方法的重命名

对std::time::Duration 类型的以下方法进行了重命名:

旧名 新名
Duration.as_seconds Duration.to_seconds
Duration.as_milliseconds Duration.to_milliseconds
Duration.as_microseconds Duration.to_microseconds

 

翻新构建系统

 

从源头构建 Inko 的过程已经清理、简化,并且拆分为两个阶段:构建和安装; 而不是所有的东西都混入一个单一的阶段。 构建Inko现在是一个运行make build的事件,安装是一个make install的事件。

可以通过设置PREFIX 和/或DESTDIR变量来定制构建和安装过程可以通过设置PREFIX 和/或DESTDIR变量来定制构建和安装过程。在运行时,该PREFIX变量指定的基本目录来加载文件。并且还充当默认DESTDIR。该 DESTDIR变量指定在安装过程中将文件移入的目录。该目录可以不同于PREFIX 目录。这很有用对于包管理器。在为软件包管理器构建软件包时,因为这些包通常在打包时安装到某种 chroot/jail 中并且排序 。

开发构建也变得更加容易。例如,要构建用于开发Inko本身的VM,请运行:

make vm/release DEV=1

这将构建VM,使其从Inko存储库的本地Git克隆加载所有必需的文件。

如果使用的是ienv,则必须先升级到最新的ienv版本,然后才能安装0.8.1。假设您已在中安装ienv ~/.local/share/ienv,则可以进行以下升级:

cd ~/.local/share/ienv
git pull origin master

接下来,您需要清理ienv可能产生的所有缓存:

ienv clean

然后可以按如下所示安装0.8.1:

ienv install 0.8.1

升级到ienv的最新版本后,将无法安装较旧版本的Inko,它们将不再起作用,并且不会显示在中ienv known

结合减少的依赖性数量(请参见下文),您现在可以使用Visual Studio构建工具在Windows上构建Inko。这个过程仍然有些牵涉并且没有记录,但是可以归结为以下步骤:

  1. 安装Visual Studio 2017生成工具,并启用C ++ / CLI功能
  2. 安装Rust和stable-msvc工具链rustup toolchain install stable-msvc
  3. 启动x64 Visual Studio开发人员提示,并导航到Inko源代码的本地副本
  4. 跑 set RUSTFLAGS=-C target-feature=+aes
  5. 跑 rustup run stable-msvc cargo build --release

如果一切顺利,您现在应该inko.exe进入./target/release

我们的目标是使此过程更轻松,并在将来进行记录。

没有更多的预编译包

从0.8.1开始,我们不再提供针对Linux,macOS和Windows的预编译软件包。我们发现这会使发布过程变得过于复杂,同时又没有带来足够的收益,因此值得付出努力。相反,我们将集中精力将Inko放入软件包管理器存储库中。有关更多详细信息,请参阅此问题

改进的CLI

Inko现在仅向您的PATH公开一个可执行文件inko。0.8.1版本之前,INKO也将暴露的可执行文件ivminkocinko-test

要运行脚本,现在使用inko example.inkoinko run example.inko。您也可以直接使用来运行脚本-e/--eval option。例如:

inko run -e "import std::stdio::stdout
stdout.print('hello')"

如果您只想编译程序,请运行inko build example.inko。然后将结果字节码保存在中./example.ibi

如果要从./tests/test目录运行单元测试,请运行inko test

更少的依赖

Inko依赖libffi,因此Inko源代码可以与C库进行交互。在0.8.1版之前,libffi始终是从源代码构建的,并且需要使用automake,autoconf,libtool,Make和libclang进行构建。在Linux上,可以使用程序包管理器安装这些依赖项,但是在其他平台上,可能不那么容易。例如,macOS附带clang但不附带libclang。您可以使用Homebrew安装LLVM(从而安装libclang) ,但是默认情况下PATH中不提供此安装。在准备使用安装之前,需要执行额外的步骤。

从Inko 0.8.1开始,不再需要LLVM和libclang依赖项。现在,您还可以选择使用来使用系统提供的libffi安装。如果有的话。使用系统libffi安装时,不需要automake,autoconf和libtool。

要构建Inko以使其使用系统的libffi安装,请运行以下命令:

make build FEATURES='libinko/libffi-system'
sudo make install

然后将相对于Inko安装Inko /usr,并将可执行文件放置在 /usr/bin/inko

使用AES-NI进行更快的哈希处理

Inko在许多地方使用哈希。为了加快速度,Inko现在使用aHash板条箱,并使用AES-NI支持进行编译。自2010年左右以来,几乎所有CPU都具有AES-NI支持,因此无需进一步更改。

如果您的CPU不支持AES-NI,则需要手动构建VM,而不是使用Make。您可以通过cargo build --release 在Inko项目的根目录中运行来实现。如果还想使用系统libffi安装,则需要运行以下命令:

cargo build --release --features libinko/libffi-system

文件变更

我们正在使用mkdocs进行新的文档设置 。在完成这项工作之前,当前的文档可能在几个地方已经过时。新的文档设置旨在使查找文档,撰写文档和提供更丰富的格式设置功能(例如提示和警告)变得更加容易。

在合并请求https://gitlab.com/inko-lang/inko/-/merge_requests/103中跟踪了此进度 。

Arch Linux软件包

如果您使用的是Arch Linux,现在可以使用AUR安装Inko。AUR提供了两个软件包: inko和 inko-git。“ inko”软件包安装Inko的最新稳定版本,而“ inko-git”软件包则从Git安装Inko。

如果您使用yay作为您的AUR助手,则可以按以下方式安装这些软件包:

yay -S inko-git    # To install from Git
yay -S inko        # To install the latest stable version

自制配方

Inko的Homebrew公式已更新为安装0.8.1。自制软件用户可以按以下方式安装此新版本:

brew update
brew install inko

 

展开阅读全文
1 收藏
分享
加载中
更多评论
0 评论
1 收藏
分享
返回顶部
顶部