theMackabu/ant
GitHub: theMackabu/ant
一个从头构建的极轻量、高性能 JavaScript 运行时,专为 serverless、边缘计算和嵌入式等对体积与冷启动时间极度敏感的场景而设计。
Stars: 782 | Forks: 24
# 🐜 Ant
_一只蚂蚁能举起自身体重 50 倍的物体。Ant 也可以。_
Ant 是一个从头构建的轻量级、高性能 JavaScript 运行时。
旨在承担远超自身重量的负载,同时不妥协性能。 ``` $ ls -lh ant -rwxr-xr-x⠀8.5M⠀ant* # 使用 -Os 构建 -rwxr-xr-x⠀4.1M⠀ant* ``` ## 目录 - [为什么选择 Ant?](#why-ant) - [安装](#installation) - [基准测试](#benchmarks) - [规范符合性](#spec-conformance) - [构建 Ant](#building-ant) - [安全](#security) - [社区](#community) - [为 Ant 做贡献](#contributing-to-ant) ## 为什么选择 Ant? | | Ant | Node | Bun | Deno | | ------------------- | ---------- | ------- | ------ | ------ | | 二进制大小 | **~8 MB** | ~120 MB | ~60 MB | ~90 MB | | 冷启动 | **~5 ms** | ~31 ms | ~13 ms | ~25 ms | | 引擎 | Ant Silver | V8 | JSC | V8 | | JIT | ✓ | ✓ | ✓ | ✓ | | 符合 WinterTC | ✓ | 部分 | ✓ | ✓ | Ant 专为那些体积和启动时间至关重要的环境而设计:serverless 函数、边缘计算、嵌入式系统、CLI 工具,以及任何你需要 JavaScript 但又无法承受 50MB 以上运行时的场景。 其引擎 Ant Silver 是纯手工构建的,而不是 V8、JSC 或 SpiderMonkey 的封装。JIT 编译器使用了 [MIR](https://github.com/themackabu/mir) 的一个分支,这是一个轻量级后端,能够实现接近编译执行的性能。 ## 安装 ``` curl -fsSL https://antjs.org/install | bash ``` ## 规范符合性 Ant 的目标是实现 [WinterTC Minimum Common API](https://min-common-api.proposal.wintertc.org/) 规范,这是由 Ecma TC55 开发的服务端 JavaScript 互操作性标准。 | 测试套件 | 通过率 | 备注 | | ------------ | --------- | ------------------------------------------ | | compat-table | **100%** | 1511/1511 (ES1–ES5, ES6, ES2016+, ESNext) | | test262 | ~64% | 持续改进中;重点关注实际场景覆盖率 | ## 基准测试 ### 冷启动 测试导入 [Hono](https://hono.dev)、注册路由并退出的时间。每个运行时都会从 `examples/npm/hono/` 加载相同的 `bench-coldstart.js` 脚本,该脚本会创建一个包含两个路由的 Hono 应用,打印 "ready",并调用 `process.exit(0)`。实际上并没有启动 HTTP 服务器,以此来单独衡量模块解析和初始化的开销。 使用 hyperfine 测量(10 次预热运行,100 次计时运行): ``` hyperfine --warmup 10 --runs 100 \ 'ant examples/npm/hono/bench-coldstart.js' \ 'node examples/npm/hono/bench-coldstart.js' \ 'bun examples/npm/hono/bench-coldstart.js' \ 'deno run --allow-read --allow-env examples/npm/hono/bench-coldstart.js' ``` | 运行时 | 平均值 | 最小值 | 最大值 | 相对值 | | ------- | ---------- | ------- | ------- | ------------ | | **Ant** | **5.5 ms** | 4.9 ms | 6.1 ms | **1.00** | | Bun | 10.6 ms | 9.5 ms | 13.8 ms | 慢 1.93× | | Deno | 24.8 ms | 22.2 ms | 29.4 ms | 慢 4.51× | | Node | 28.7 ms | 27.1 ms | 31.2 ms | 慢 5.22× |
## 构建 Ant
有关如何从源代码构建 Ant 以及支持的平台列表,请参阅 [BUILDING.md](BUILDING.md)。
## 安全
有关报告 Ant 中安全漏洞的信息,请参阅 [SECURITY.md](SECURITY.md)。
## 社区
- [Discord](http://discord.gg/CH7YSjWGzY)
- [博客:工作是开始](https://themackabu.dev/blog/ant-part-two)
- [DeepWiki:Ant 内部机制](https://deepwiki.com/theMackabu/ant)
## 为 Ant 做贡献
我们欢迎通过 pull request 进行贡献。更多细节请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
有关 Ant 的治理信息,请参阅 [GOVERNANCE.md](GOVERNANCE.md)。
旨在承担远超自身重量的负载,同时不妥协性能。 ``` $ ls -lh ant -rwxr-xr-x⠀8.5M⠀ant* # 使用 -Os 构建 -rwxr-xr-x⠀4.1M⠀ant* ``` ## 目录 - [为什么选择 Ant?](#why-ant) - [安装](#installation) - [基准测试](#benchmarks) - [规范符合性](#spec-conformance) - [构建 Ant](#building-ant) - [安全](#security) - [社区](#community) - [为 Ant 做贡献](#contributing-to-ant) ## 为什么选择 Ant? | | Ant | Node | Bun | Deno | | ------------------- | ---------- | ------- | ------ | ------ | | 二进制大小 | **~8 MB** | ~120 MB | ~60 MB | ~90 MB | | 冷启动 | **~5 ms** | ~31 ms | ~13 ms | ~25 ms | | 引擎 | Ant Silver | V8 | JSC | V8 | | JIT | ✓ | ✓ | ✓ | ✓ | | 符合 WinterTC | ✓ | 部分 | ✓ | ✓ | Ant 专为那些体积和启动时间至关重要的环境而设计:serverless 函数、边缘计算、嵌入式系统、CLI 工具,以及任何你需要 JavaScript 但又无法承受 50MB 以上运行时的场景。 其引擎 Ant Silver 是纯手工构建的,而不是 V8、JSC 或 SpiderMonkey 的封装。JIT 编译器使用了 [MIR](https://github.com/themackabu/mir) 的一个分支,这是一个轻量级后端,能够实现接近编译执行的性能。 ## 安装 ``` curl -fsSL https://antjs.org/install | bash ``` ## 规范符合性 Ant 的目标是实现 [WinterTC Minimum Common API](https://min-common-api.proposal.wintertc.org/) 规范,这是由 Ecma TC55 开发的服务端 JavaScript 互操作性标准。 | 测试套件 | 通过率 | 备注 | | ------------ | --------- | ------------------------------------------ | | compat-table | **100%** | 1511/1511 (ES1–ES5, ES6, ES2016+, ESNext) | | test262 | ~64% | 持续改进中;重点关注实际场景覆盖率 | ## 基准测试 ### 冷启动 测试导入 [Hono](https://hono.dev)、注册路由并退出的时间。每个运行时都会从 `examples/npm/hono/` 加载相同的 `bench-coldstart.js` 脚本,该脚本会创建一个包含两个路由的 Hono 应用,打印 "ready",并调用 `process.exit(0)`。实际上并没有启动 HTTP 服务器,以此来单独衡量模块解析和初始化的开销。 使用 hyperfine 测量(10 次预热运行,100 次计时运行): ``` hyperfine --warmup 10 --runs 100 \ 'ant examples/npm/hono/bench-coldstart.js' \ 'node examples/npm/hono/bench-coldstart.js' \ 'bun examples/npm/hono/bench-coldstart.js' \ 'deno run --allow-read --allow-env examples/npm/hono/bench-coldstart.js' ``` | 运行时 | 平均值 | 最小值 | 最大值 | 相对值 | | ------- | ---------- | ------- | ------- | ------------ | | **Ant** | **5.5 ms** | 4.9 ms | 6.1 ms | **1.00** | | Bun | 10.6 ms | 9.5 ms | 13.8 ms | 慢 1.93× | | Deno | 24.8 ms | 22.2 ms | 29.4 ms | 慢 4.51× | | Node | 28.7 ms | 27.1 ms | 31.2 ms | 慢 5.22× |
环境
| 详情 | 值 | | -------- | --------------------------------- | | 硬件 | Apple M5 Pro, 64 GB RAM, 18 cores | | 操作系统 | macOS 26.5.1 (arm64) | | Ant | 12.1.15dd25d.1 | | Node | 26.2.0 | | Bun | 1.3.14 | | Deno | 2.8.3 |有关 Ant 的治理信息,请参阅 [GOVERNANCE.md](GOVERNANCE.md)。
标签:JavaScript运行时, JIT编译器, LangChain, Serverless, 客户端加密, 数据可视化, 轻量级, 边缘计算