Ant JavaScript Runtime: High-Performance, Lightweight JS Engine
Ant JavaScript Runtime: High-Performance, Lightweight JS Engine
Ant 是一个从零开始构建的轻量级、高性能 JavaScript 运行时
Ant 在单个 9.1 MB 的二进制文件中提供了接近 V8 的速度体验,消除了对大型下载或复杂工具链设置的需求。与许多其他运行时不同,Ant 不是 V8、JSC 或 SpiderMonkey 的封装,它使用自己手工构建的引擎,称为 Ant Silver。
极小的二进制体积和冷启动性能
Ant 旨在实现最小的占用空间和快速初始化。该运行时的二进制文件大小为 9.1 MB,这显著小于传统的 JavaScript 运行时。这种效率转化为更快的冷启动。在一次衡量导入 Hono、注册两个路由并退出的基准测试中,Ant 记录的冷启动时间为 5.4 ms,优于 Bun (12.8 ms)、Deno (24.8 ms) 和 Node.js (31.1 ms)。
原生生态系统和 TypeScript 支持
Ant 与现有的 JavaScript 生态系统兼容,并支持真实的 npm 包。它符合 WinterTC 标准,并保持了 100% 的兼容性得分。它可以与 Hono、Elysia、TypeScript、React 和 Rolldown 等流行框架和工具协同工作。
关键的开发者体验特性包括:
- Zero-config TypeScript: Ant 直接运行 TypeScript 文件,无需
tsconfig文件、打包器或单独的构建步骤。 - Direct Server Execution: Ant 提供默认的 fetch export,允许 Hono 等框架在无需适配器的情况下工作。开发者只需运行
ant server.js即可启动服务器。 - Fast Package Installation: Ant 包含自己的包安装机制,据报告比 npm 快高达 40 倍。
硬件隔离的沙箱机制
Ant 为执行不受信任的 JavaScript 代码提供了一个 VM 隔离的沙箱。与简单的权限提示不同,这是一个通过 KVM 或 Hypervisor.framework VM 实现的硬边界,确保每个沙箱都是其自身的硬件隔离实例。
沙箱特性包括:
- Read-only Mounts: 文件系统可以被挂载为不可变,除非显式授予写入权限。
- Network Control: 默认拒绝网络访问,仅转发特定命名的端口。
ants.land 注册表
Ant 引入了 ants.land,一个支持 npm 协议的开放注册表。这允许通过作用域或裸名称发布和安装包。包也可以通过 esm.ants.land 直接在浏览器中访问。
社区反馈与注意事项
虽然 Ant 项目因其较小的二进制体积和嵌入式潜力而引起了关注,但社区也指出了一些有待进一步开发的点:
"I hope you get some collaborators, to increase the bus factor. You might want to write a roadmap to focus efforts."
此外,项目作者 theMackabu 指出,最近的一个版本由于安装期间的 libcares 错误,需要进行静态发布热修复。