← 返回博客

Rotifer v0.8.6:四个 CLI 修复,装包不再需要 Rust

修复 async 基因崩溃、编译缓存不更新、原生路径报错和燃料过早耗尽四个问题;预构建的原生二进制随 npm 分发,安装时不再需要本地 Rust 工具链。

Rotifer v0.8.6:四个 CLI 修复,装包不再需要 Rust

本文补记于 2026-10-19。v0.8.6 于 2026-04-21 发布,当时只更新了更新日志,没有写博文。

v0.8.6 做了两件事:修好四个在日常使用中会碰到的 CLI 问题;把预构建的原生二进制放进 npm 包,安装时不用再在本机编译 Rust。

@rotifer/playground v0.8.6 已在 npm 发布。


四个修复

async 基因不再崩溃

如果基因的 express() 写成了 async,此前运行时会报一句难懂的「Pending jobs in the event queue」然后崩溃。现在编译阶段就会检测到 async 用法,并给出清楚的错误提示,告诉你问题出在哪里。

改了源码,rotifer compile 会重新编译

此前编辑 index.ts 之后,rotifer compile 有时会悄悄复用旧的 gene.wasm,你改的代码根本没进去。现在它会检测源文件变化并重新编译。

irHash 不再让原生执行路径报错

phenotype.json 里带 irHash 字段的基因,在原生(wasmtime)执行路径上会因为格式不匹配而失败。这个问题已经修复。

简单任务不再报「fuel exhausted」

WASM 沙箱的默认资源上限调高了:燃料从 100 万提高到 5 亿,内存上限 256 MiB,超时 60 秒。此前用 Javy/QuickJS 编译的基因,哪怕只做很简单的事,也可能因为燃料不够而中断。


安装不再需要 Rust

@rotifer/playground 的核心部分是 Rust 写的原生模块。在这一版之前,部分平台安装时需要本机有 Rust 工具链来现场编译。

从 v0.8.6 起,预构建的原生二进制通过各平台专属的 npm 包分发:

你照常执行 npm install,npm 会自动挑出适合你机器的那一个,不需要额外操作。


完整改动见更新日志。这些修复在之后的版本里都还在,现在安装最新版即可:

npm install -g @rotifer/playground@latest