命令行工具
theMackabu/ant avatar
theMackabu/ant

Ant:9 MB 的 JavaScript 运行时,冷启动 4 毫秒,但 spec 兼容性只有 65%

该项目围绕「javascript for 's, a tiny runtime with big ambitions. Each runtime loads the same bench-coldstart.js script from examples/npm/hono/ that creates a Hono app with two routes, prints ready , and calls process.exit(0).」构建,适用于实际场景的开源实践,提供可复用的工具链与集成方式。

1,273 个 Star31 个 ForkCMIT

秒懂

它是什么?
Ant 是一个从零实现的 JavaScript 运行时,主打小体积和低延迟。它用自研引擎 Ant Silver 和 MIR 后端,但 test262 通过率仅约 65%,适合特定场景,不适合通用生产。
适合谁用?
Ant 适合以下人群:在 serverless、边缘计算或嵌入式设备上运行简单脚本,且对冷启动和二进制体积极度敏感,同时能接受 test262 约 65% 的兼容性。不适合以下人群:需要完整 ES 特性支持、依赖 Node 生态中未实现 API,或运行复杂业务逻辑的团队。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 C(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

一个为冷启动而生的运行时

Ant 解决的问题很具体:在 serverless 函数、边缘节点或嵌入式设备上,JavaScript 运行时的体积和启动时间往往比执行速度更关键。Node 的安装包约 140 MB,冷启动约 30 毫秒,这在传统服务器上不算什么,但在按调用计费或资源受限的环境里,每一毫秒和每一兆字节都有成本。Ant 的 README 直接给出对比:二进制 9 MB,冷启动约 4 毫秒,相对 Node 快 7.5 倍。它不是一个 V8 或 JSC 的包装,而是自研引擎 Ant Silver,JIT 编译器基于 MIR 后端的一个 fork。目标用户很明确:写 CLI 工具、边缘函数、或者任何不想为运行时支付 50 MB 以上开销的开发者。

Ant Silver 与 MIR:自研引擎的架构选择

Ant 的核心是 Ant Silver 引擎,README 强调它不是 V8、JSC 或 SpiderMonkey 的封装。JIT 编译器使用 MIR 的 fork,MIR 是一个轻量级后端,用于生成接近原生的机器码。这个架构意味着 Ant 的启动路径很短,因为它不需要像 V8 那样加载庞大的内置库和优化基础设施。但自研引擎的代价是兼容性风险。test262 通过率约 65%,即 53578 个测试中只有 34758 个通过。这个数字说明 Ant 对 ES 语言特性的覆盖不完整,尤其是 ESNext 部分。相比之下,compat-table 声称 100% 通过 1511 项,但 compat-table 只覆盖基础语法和常用 API,深度远不如 test262。Temporal 的 100% 通过率(4603/4603)是一个亮点,但 Temporal 是相对独立的提案,不能代表整体兼容性。

冷启动 benchmark 的真相与局限

README 给出的 benchmark 有明确的方法:用 hyperfine 测量同一个 bench-coldstart.js 脚本,脚本创建 Hono 应用、注册两条路由、打印 ready 然后退出,不启动 HTTP 服务器。这隔离了模块解析和初始化开销。结果:Ant 平均 3.9 毫秒,Bun 8.8 毫秒,Deno 18.6 毫秒,Node 29.4 毫秒。环境是 Apple M5 Pro,macOS 27.0。这个数据可信,因为它有具体硬件和软件版本。但注意,这只是一个微基准,只测量冷启动,不测量实际请求处理或复杂计算。如果你运行一个需要大量 I/O 或 CPU 密集的脚本,Ant 的 JIT 性能可能不如 V8 成熟。此外,benchmark 没有包含内存占用或长时间运行稳定性,这些在边缘场景同样重要。

安装与构建:一条 curl 命令,但源码构建需要看文档

安装 Ant 很简单,README 提供一行命令:curl -fsSL https://antjs.org/install | bash。这是一个典型的安装脚本模式,适合快速试用。如果你想从源码构建,README 指向 BUILDING.md,但没有列出具体平台或依赖。仓库默认分支是 master,主要语言是 C,这意味着构建需要 C 工具链。考虑到 Ant 是自研引擎,构建过程可能涉及生成 JIT 代码或链接 MIR 后端,这比构建 Node 更复杂。如果你打算在生产环境使用,建议先查看 BUILDING.md 确认你的操作系统是否受支持。release 版本命名如 v14.0.ff84a70d.0,包含 commit hash,说明版本与源码强绑定,升级时可能需要重新构建。

WinterTC 兼容:一个值得注意的定位

Ant 明确目标是 WinterTC Minimum Common API,这是 Ecma TC55 制定的服务器端 JavaScript 互操作标准。README 的表格显示 Ant 声称 WinterTC conformant,而 Node 是 partial。这意味着 Ant 不是试图完整复刻 Node,而是只实现一个最小公共 API 子集。这个定位有实际意义:如果你只使用 WinterTC 定义的 API(比如 fetch、crypto 等),Ant 能保证一致性。但风险在于,Node 生态中的大量 npm 包依赖非 WinterTC 的 API,比如 process 的细节、Buffer 的扩展方法、或者 fs 的某些回调风格。Ant 的 Hono 示例能跑,但 Hono 本身是轻量框架,不代表更重的 Express 或 Koa 也能工作。如果你依赖特定 npm 包,必须逐个验证。

限制与失败模式:65% 的 test262 不是装饰

Ant 最大的限制是 test262 通过率约 65%。这意味着每三个 ES 特性中大约有一个可能不工作。对于生产代码,这不是小概率事件。例如,你可能用到 async iterators 的某些边缘行为,或者 RegExp 的特定 Unicode 属性,这些在 Ant 中可能抛错或返回错误结果。另一个失败模式是 JIT 的成熟度。MIR 是相对小众的后端,不像 V8 的 TurboFan 经过多年优化,复杂循环或大型对象的 GC 行为可能不如预期。还有,Ant 的二进制只有 9 MB,但这是用 -Os 编译的结果,README 也显示默认构建是 9 MB,优化后 4.7 MB,但优化可能牺牲性能。如果你需要调试器或 inspector 协议,Ant 是否支持没有在 README 中说明,这可能是另一个坑。

替代方案:Bun 与 Node 的取舍

如果冷启动是你的痛点,Bun 是更成熟的替代。Bun 的二进制约 61 MB,冷启动约 10 毫秒,比 Ant 慢 2.26 倍,但 Bun 的 test262 通过率接近 100%,且兼容大部分 Node API。Bun 使用 JavaScriptCore 引擎,拥有完整的 JIT 和调试工具。对于边缘场景,Deno 提供类似 Ant 的沙箱和权限模型,但体积更大。Node 虽然冷启动最慢,但生态最完整。选择 Ant 意味着接受 35% 的测试失败率,换取 5 MB 的体积优势。如果你的脚本只有几十行,不依赖复杂特性,Ant 可行。但如果你的服务有数百个依赖,Bun 或 Node 更安全。Ant 的 README 没有提供与 Bun 在运行时长任务上的对比,这是一个空白。

维护与升级成本:快速迭代的双刃剑

Ant 的发布记录显示 v14 在 2026-08-18 发布,v13 在 08-02,v12 在 07-11,大约每两周一个版本。版本号包含 commit hash,如 v14.0.ff84a70d.0,暗示每次发布都对应特定源码状态。这种节奏意味着 bug 修复快,但 API 可能不稳定。README 没有提供 changelog 或迁移指南,你需要自己看 git log 或对比 release 差异。许可证是 MIT,这对商业使用友好,没有 copyleft 义务。但自研引擎的维护风险在于:如果作者停止维护,社区能否接手?目前没有看到 governance 之外的贡献者信息。成本方面,构建和测试需要 C 工具链,每次升级可能需要重新编译,不像 npm 包那样即装即用。

编辑结论

Ant 适合以下人群:在 serverless、边缘计算或嵌入式设备上运行简单脚本,且对冷启动和二进制体积极度敏感,同时能接受 test262 约 65% 的兼容性。不适合以下人群:需要完整 ES 特性支持、依赖 Node 生态中未实现 API,或运行复杂业务逻辑的团队。采用前必须验证三件事:第一,用 test262 或你自己的测试套件跑一遍目标代码,确认不依赖未实现特性;第二,检查 WinterTC Minimum Common API 的覆盖范围,Ant 只保证该子集;第三,评估 MIR 后端在非 macOS 平台上的表现,因为 benchmark 数据来自 Apple M5 Pro,其他硬件上的冷启动可能不同。Ant 的发布节奏较快,v14 与 v13 间隔仅两周,升级前需阅读 changelog,因为 API 可能变动。最终判断:Ant 是一个有明确边界的实验性运行时,它的价值在于极小体积和极快启动,但 65% 的 test262 通过率意味着它目前不是 Node 或 Bun 的替代品,而是针对窄场景的专用工具。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记