大象世界中的蚂蚁 —— 为什么你应该关注 Ant 运行时
想象一下,你正在为简单的云函数打包一个 Docker 容器。你写了十行 JavaScript 代码,最终得到的镜像却有几百 MB。其中大部分重量都来自 Node.js。我们已经习惯了这种"基础设施税",但一位名叫 theMackabu 的开发者决定是时候做出改变了。他的项目 Ant 试图创建一个仅重 8 MB 却知道如何飞速运行的 JavaScript 运行时。
它是什么,为什么你需要它
Ant 是一个从零开始使用 C 语言编写的轻量级 JavaScript 运行时。作者没有使用现有的引擎(如 Node.js 或 Deno 使用的 V8,或 Bun 使用的 JavaScriptCore),而是编写了自己的引擎 Ant Silver。
既然巨头已经存在,为什么还要费力去做?答案就在数字里。Node.js "开箱即用" 大约重 120 MB。Ant 标准构建仅占用 8 MB,如果使用大小优化编译可以缩小到 4 MB。这使其成为边缘计算、嵌入式系统和 CLI 工具的理想选择,在这些场景中每一 MB 和每一毫秒都至关重要。
令人印象深刻的冷启动
无服务器架构的主要痛点之一是"冷启动"——平台启动运行时并开始执行代码所需的时间。Node.js 初始化大约需要 30 ms,而 Ant 仅需 5 ms 即可完成。
该项目的基准测试使用 Hono——一个流行的 API 构建框架。Ant 加载 Hono、注册路由并退出的速度比 Bun 快两倍,比 Node.js 快五倍。当然,这是一个合成启动和退出测试,但它清楚地展示了运行时在初始化期间的开销有多小。
技术内幕
独自构建自定义 JS 引擎听起来很疯狂,但这里有一些巧妙的解决方案。Ant Silver 引擎使用基于 MIR 的 JIT 编译器。这个轻量级后端使 JavaScript 代码能够以接近编译语言的速度执行,同时不需要数 GB 的 RAM 来运行优化器。
该项目针对 WinterTC 标准(最小通用 API)。这是为了让为一个服务器端 JS 环境编写的代码能够不变地运行在另一个环境中。目前,Ant 完全通过 ES1–ES6 及后续规范的兼容性测试(15,011 项测试全部通过)。然而,在更全面的测试中 test262 覆盖率目前约为 64%。作者坦承工作仍在进行中,重点关注开发者实际需要的功能。
它可以用在哪里
我看到几个 Ant 已经可以产生影响的场景:
- 微型 CLI 工具。 如果你为同事编写一个需要快速下载和运行的小工具,4 MB 的二进制文件比要求安装 Node.js 看起来更有吸引力。
- 边缘计算。 在代码尽可能靠近用户运行的分布式网络中,小体积和快速启动直接影响延迟。
- IoT 和嵌入式系统。 在内存资源受限的地方,常规 Node.js 根本装不下,而 Ant 会感觉很自在。
如何尝试
安装方式与此类工具的标准方式相同:
curl -fsSL https://antjs.org/install | bash
如果你想深入了解并自己构建,需要一个 C 编译器。该项目正在积极开发中,作者维护着一个有趣的博客,讲述实现细节,解释 Ant 如何能够承载自身重量 50 倍的东西。
今天应该切换到它吗?
说实话:Ant 仍然是一个雄心勃勃的实验。如果你的工作依赖于特定的 Node.js 原生模块或依赖 V8 内部结构的庞大 NPM 生态系统,你会遇到问题。
然而,如果你需要一个在特定条件下运行 JS 的极简工具,或者你只是厌倦了现代解决方案的臃肿——给这个仓库点个星吧。这是一个罕见的一人挑战行业架构臃肿的例子。即使 Ant 不能取代 Node.js,它也肯定会促使其他运行时开发者思考优化问题。
相关项目