
Bun
一体化的 JavaScript 运行时和工具链开源
关于 Bun
Bun 是一个把 JavaScript 运行时、包管理器、测试运行器和打包器塞进同一个可执行文件的工具链,目标是直接替换 Node.js 及其周边工具。它从 Zig 起家,2026-08-20 发布的 1.4 版整体改用 Rust 重写;2025-12-02 起项目归属 Anthropic,Claude Code 就以 Bun 可执行文件分发。截至 2026-10-25 仓库有 96,397 个星标,最新版本 1.4.4,Bun 自身为 MIT 许可证,免费使用。1.4 发布文写明 Bun 还没有与 Node.js 百分之百兼容。

它是什么
Bun 是 oven-sh 组织维护的开源项目,GitHub 仓库简介是“快得惊人的 JavaScript 运行时、打包器、测试运行器和包管理器,四合一”(官方自述)。官网首页的说法更直接:运行时、包管理器、测试运行器和打包器放在同一个二进制文件里;现有 Node.js 项目可以只用 bun install 或 bun test,也可以整个跑在 Bun 上。2025 年 12 月 2 日,Bun 官方博客宣布 Bun 加入 Anthropic,并写明项目继续以 MIT 许可证开源、在 GitHub 上公开开发。
它的 JavaScript 引擎是 Safari 背后的 JavaScriptCore,Rust 重写发布文把它和 V8 并列为现代 JavaScript 引擎。LICENSE.md 写明 Bun 静态链接 JavaScriptCore 与 WebKit,打过补丁的 WebKit 放在 oven-sh/webkit 仓库,并附有重新链接的说明。除此之外还静态链接了 BoringSSL、brotli、libarchive、lol-html、lsquic、mimalloc、zstd、simdutf、zlib-ng、c-ares、ICU 等一长串 C/C++ 库。
实现语言在 2026 年换了一次:1.3.14 是最后一个 Zig 版本,1.4.0 起改用 Rust。Rust 重写的发布文说,Bun 约有 20% 的代码是 C++,其余原本是 Zig。
日常使用涉及的命令有 bun run、bun install、bun test、bun build,近两个版本又加了 bun fmt(兼容 Prettier 的格式化)和 bun check(内置 TypeScript 类型检查)。运行时层面提供一组 Bun 专属 API,例如 Bun.serve、Bun.sql、Bun.file、Bun.spawn、Bun.RedisClient、Bun.cron,以及 1.4 新增的 Bun.WebView、Bun.Image、Bun.markdown;同时实现 node:fs、node:http、node:child_process 等 Node.js 内置模块,供现有 npm 包直接调用。
官网与仓库 README 给出的安装方式包括 macOS 和 Linux 上的 curl 脚本、Windows 上的 PowerShell 脚本、npm install -g bun,以及 Homebrew、Scoop 和 Docker 镜像。npm 下载统计接口显示,npm 上的 bun 包在 2026-09-23 至 2026-10-22 下载 15,329,046 次(按 UTC 统计,截至 2026-10-25)。
快得惊人的 JavaScript 运行时、打包器、测试运行器和包管理器,四合一。
核心能力
四合一工具链。一个可执行文件同时承担运行时、包管理器、测试运行器和打包器。对团队来说,省掉的是 node、npm 或 pnpm、Jest 或 Vitest、esbuild 或 webpack 之间的版本搭配与配置文件。1.0 发布文(2023-09-08)把这一点作为项目存在的理由:JavaScript 工具层层叠加,变得又慢又复杂,Bun 想在不丢掉生态的前提下消除这些负担。
速度对照(厂商自测)。官网首页的对照(截至 2026-10-25,Linux x64、EPYC 9R14,三次取中位数)显示:在 Express 5.2.1 的 HTTPS hello-world 测试里,Bun 1.4 每秒 48,243 个请求,Node.js 26.7.0 为 25,181,Deno 2.9.5 为 19,243;在含约 220 个包的 Next.js 项目热缓存安装里,Bun 1.4 用 0.21 秒,pnpm 11.21.0 用 1.92 秒,npm 12.0.2 用 4.45 秒。这组结果为官方自述,测试由 Bun 团队设计和运行。
内置数据库与服务客户端。Bun.sql 支持 PostgreSQL 和 MySQL,另有 Redis 客户端与 S3 客户端,都不需要额外安装 npm 包。官网同一组对照里,Bun.sql 在 100 个并发查询下每秒 20,243 次,Node.js 加 postgres.js 为 10,000 次;1.4.4 的发布说明称 Bun.sql 的 CPU 占用最多降低 48%。两处数字同样属于厂商自测。
1.4 的新能力。2026-08-20 发布的 Bun 1.4 加入 Bun.WebView(无头浏览器控制)、Bun.Image、Bun.markdown、JSON5 与 JSONL 解析、终端与 cron 接口;bun test 和 bun run 支持并行执行;新增 Windows ARM64 构建;bun install 可选启用全局虚拟存储,发布文称安装最多快 7 倍。发布文还写到这一版修复了 2,900 多个 issue,空闲 CPU 占用降为原来的五分之一,内存最多少用 35%,Linux 上启动快 50%,这些都是官方自述。
Node.js 兼容进度。1.4 把 Node.js 官方测试套件中新增通过的 1,517 个测试纳入每次提交的 CI,并按模块公布通过数,例如 child_process 为 105/116,inspector 为 22/110。同一篇发布文也写明 Bun 还没有做到与 Node.js 百分之百兼容。
单文件可执行程序。bun build --compile 可以把应用和运行时打成一个可执行文件。Anthropic 收购公告写道 Claude Code 以 Bun 可执行文件的形式发布给用户。
适合谁 / 不适合谁
适合:想用一个工具替代 npm、Jest、tsx、esbuild 等多件套的 TypeScript 或 JavaScript 团队,尤其是新项目,可以从 bun init 起步,不必拼装工具链。
适合:需要把命令行工具打成单文件分发的开发者。Anthropic 收购公告写道,Claude Code 以 Bun 可执行文件的形式分发,OpenCode 构建在 Bun 上,Tailwind 的独立 CLI 也是用 Bun 构建的。
适合:只想先提速局部环节的 Node.js 项目。官网写明支持在现有 Node.js 项目里只用 bun install 或 bun test,运行时仍用 Node.js,迁移可以分步进行。
适合:在 CI 里大量重复安装依赖的团队。官网有安装速度对照(厂商自测),1.4 加入了可选的全局虚拟存储。
不适合:依赖 Node.js 内部行为较深的项目,比如重度使用 node:inspector 调试接口,或依赖 V8 专属接口的代码。Bun 用的是 JavaScriptCore,1.4 发布文给出的 inspector 模块通过数为 22/110,vm 为 98/101,child_process 为 105/116。
不适合:需要长周期稳定支持的企业环境。1.4(2026-08-20)是从 Zig 到 Rust 的整体重写。
不适合:顾虑供应商归属的团队。项目 2025-12-02 起归 Anthropic 所有,公告承诺继续 MIT 开源、公开开发。
和同类比
和 Node.js 比。Node.js 仓库 nodejs/node 截至 2026-10-25 有 123,071 个星标,许可证为 MIT(LICENSE 文件另附依赖库条款),当前版本 26.12.1(2026-10-21),长期支持线 24.x 的最新版为 24.22.1(2026-10-21)。Node.js 本身只负责运行时,包管理、测试、打包通常交给 npm、pnpm、Vitest、esbuild 等外部工具;Node.js 的 GitHub release 标题给长期支持版本标注代号,24.x 为 Krypton。Bun 把这几类工具放进一个可执行文件。
和 Deno 比。Deno 是另一个 JavaScript 运行时,仓库简介为“面向 JavaScript 和 TypeScript 的现代运行时”,主要语言为 Rust,许可证 MIT,仓库 denoland/deno 截至 2026-10-25 有 108,753 个星标,最新版本 2.9.8 于 2026-10-21 23:28 (UTC+8) 发布。Deno 背后有商业托管 Deno Deploy,定价页(截至 2026-10-25)列出 Free 每月 0 美元、Pro 每月 20 美元、Builder 每月 200 美元和企业定制档;Bun 没有对应的托管产品。2026-10-09,Ryan Dahl 在 Deno 官方博客宣布 Deno 团队整体加入 Cloudflare。
和 pnpm、Vitest 等单项工具比。pnpm、Vitest 都运行在 Node.js 上,可以单独替换包管理器或测试框架。Bun 的安装对照里 pnpm 11.21.0 耗时 1.92 秒、Bun 0.21 秒(官网,厂商自测)。
上手路径
安装。macOS 和 Linux 上的安装命令是 curl -fsSL https://bun.;Windows 上是 powershell -c "irm bun.|iex";已有 Node.js 环境的也可以 npm install -g bun。官网与发布文的示例域名仍是 bun.sh。升级命令是 bun upgrade。
新项目。bun init 初始化项目,bun run index. 直接运行 TypeScript,不需要额外的转译步骤;HTTP 服务可以用内置的 Bun.serve 起步。
在现有 Node.js 项目里试用。第一步是只把 npm install 换成 bun install,这一步涉及锁文件迁移和安装时间;1.4.4 起支持从 Yarn Berry 锁文件迁移。第二步把测试命令换成 bun test,1.0 发布文称它兼容 Jest,支持快照测试、mock 和代码覆盖率。最后一步是用 bun run 启动应用。
分发单文件程序。bun build --compile ./cli. 会把代码和运行时打成一个可执行文件。根据 1.4 发布文的表格,Linux x64 上 Bun 1.4 本体约 77.0 MB,比 1.3.14 的 88.5 MB 小。
定价与许可证
Bun 本身免费,没有付费档,也没有官方托管服务。GitHub 显示仓库许可证为 Other,原因是 LICENSE.md 不是标准的 MIT 许可证格式:开头写“Bun itself is MIT-licensed”,随后逐项列出静态链接的第三方库及其许可证。
许可证的来历可以追到具体提交。2021-08-22 10:32 (UTC+8),Jarred Sumner 在提交 2d67691(提交信息为 Readme)中给 README 加入 License 一节,第一次写出“Bun itself is MIT-licensed”,并说明 JavaScriptCore 与 WebKit 为 LGPL-2、被 Bun 静态链接。2023-02-24 09:13 (UTC+8),提交 f543005 把这段内容放进 docs/;2024-05-16 18:49 (UTC+8),提交 d55ac0f 把它移到根目录 LICENSE;2024-06-22 06:14 (UTC+8),提交 19bed6e 改名为现在的 LICENSE.md。
LGPL 部分。LICENSE.md 写明 JavaScriptCore 和 WebKit 以 LGPL-2 许可,tinycc 为 LGPL 2.1;为了满足 LGPL 的重新链接要求,Bun 公开了打补丁后的 WebKit 源码与重新链接说明。
风险与局限
Node.js 兼容。1.4 发布文写明 Bun 还没有与 Node.js 百分之百兼容,并给出了按模块的通过数。
Rust 重写。1.4 是从 Zig 到 Rust 的整体重写,Rust 重写发布文说,这次移植大部分由 Claude 完成,重写前的 Zig 代码去掉注释约 535,496 行,最终约 780,000 行 Rust 中约 4% 写在 unsafe 块内。发布文也说重写以原有 TypeScript 测试套件全部通过为合并标准,Claude Code 从 2.1.181 起已在用 Rust 版。1.4.0 于 2026-08-20 发布,截至 2026-10-25 最新版本为 1.4.4。
issue 与 PR。截至 2026-10-25,GitHub 搜索显示开放 issue 3,566 个、开放 PR 5,782 个,全部状态的 issue 18,976 个、PR 26,525 个;GitHub 接口的 open_issues_count(含未关闭的 issue 与 PR)为 9,348。
提交者。GitHub 贡献者接口(anon=0)显示,默认分支上 Jarred-Sumner 的提交为 8,684 次,机器人账号 robobun 为 3,087 次,排第二(截至 2026-10-25)。
下载数。收购公告写 2025 年 10 月月下载 720 万次,Rust 重写发布文写 CLI 月下载超过 2,200 万次,npm 下载统计接口显示 npm 上的 bun 包在 2026-09-23 至 2026-10-22 下载 15,329,046 次(按 UTC 统计,截至 2026-10-25)。三者的统计对象不同。
所有权。Bun 2025 年 12 月起属于 Anthropic,团队成员在 Anthropic 工作。公告承诺继续 MIT 开源、原团队维护、公开开发。
基准数字均为厂商自测。官网和发布文的性能数据全部是厂商自测,硬件、版本和场景由 Bun 团队选定;官网安装对照的图表写 0.21 秒,同页表格写 210 s。
来龙去脉
起点是一次移植。Jarred Sumner 在 Rust 重写发布文中回忆,Bun 最初是把 esbuild 的 JavaScript 与 TypeScript 转译器从 Go 逐行移植到 Zig,第一行 Zig 写于 2021-04-16。GitHub 仓库建立于 2021-04-14 08:48 (UTC+8);2021-08-22 的 README 提交已经写明 MIT 许可证,并致谢 esbuild 作者 evanw。
公开亮相与融资。收购公告记述,v0.1.0 于 2022 年 7 月发布,第一周拿到约 2 万个星标;随后成立 Oven 公司,获得 Kleiner Perkins 领投的 700 万美元种子轮,又在 1.0 之后获得 Khosla Ventures 领投的 1,900 万美元 A 轮,公告写融资共 2,600 万美元,团队当时 14 人。
版本主线。1.0 于 2023-09-08 发布,宣布稳定可用于生产;1.1 加入 Windows 支持;1.2 加入内置 PostgreSQL 与 S3 客户端,并开始有 X、Midjourney 等公司在生产中使用;1.3 加入前端开发服务器、Redis 与 MySQL 客户端。GitHub 发布页上最早的 bun-build-8 发布于 2021-09-14 17:48 (UTC+8)。
加入 Anthropic。2025-12-02,Jarred Sumner 发文宣布 Bun 被 Anthropic 收购。公告写到当时 Bun 营收为 0 美元,账上资金还够用 4 年以上;之所以选择加入,是因为 Claude Code、FactoryAI、OpenCode 等 AI 编码工具都构建在 Bun 上,而 Bun 仓库里合并 PR 最多的 GitHub 账号已经是一个 Claude Code 机器人。公告承诺 Bun 继续 MIT 开源、由原团队维护、公开开发。
从 Zig 到 Rust。2026-07-08 的发布文《Rewriting Bun in Rust》解释了动机:1.3.14 修复的大量崩溃来自释放后使用、重复释放和错误路径上忘记释放内存,Zig 缺少析构机制,靠风格规范难以约束;改用 Rust 后这类问题多数会变成编译错误。移植方式是让 Claude 按原有 Zig 代码的结构机械翻译,每段代码由另外两个 Claude 实例对抗式审查,前后 11 天产生 6,502 个提交,峰值约每分钟 1,300 行。发布文给出的效果包括 Linux 二进制缩小 6.8 MB、性能提升 2% 到 5%(官方自述)。1.3.14 是最后一个 Zig 版本,1.4.0 于 2026-08-20 22:07 (UTC+8) 发布,成为第一个 Rust 版本。
近况。2026 年 10 月的两个版本继续加工具:1.4.3(2026-10-10)加入 bun check,发布说明称比 tsc 7 快 3 到 6.4 倍;1.4.4 于 2026-10-22 18:11 (UTC+8) 发布,加入兼容 Prettier 的 bun fmt,并修复 271 个 issue,致谢 39 位贡献者。
我们的判断
Bun 的特点是:运行时、包管理器、测试运行器和打包器在同一个可执行文件里;Claude Code、OpenCode 以它为运行时;截至 2026-10-25,npm 下载统计接口显示 bun 包在 2026-09-23 至 2026-10-22 下载 15,329,046 次(按 UTC 统计);2025-12-02 起归 Anthropic 所有,继续以 MIT 许可证开源。
它的限制:1.4 发布文写明还没有与 Node.js 百分之百兼容;1.4.0 的 Rust 重写于 2026-08-20 发布;默认分支提交最多的两个账号是 Jarred-Sumner 和机器人账号 robobun(截至 2026-10-25)。
亮点
Bun 想用一个可执行文件取代 Node、npm、webpack 和 Jest,而且在多数人还不相信这件事可行的时候,就已经做成了大半。Jarred Sumner 用 Zig 在 JavaScriptCore 之上写出了它,安装和启动速度的数字改变了人们对 JavaScript 工具的预期。
真正值得说的是兼容性工作:把成千上万个 Node API 重新实现到足够精确,让现有的包直接就能跑。这件事不起眼、耗时长,却正是 Bun 如今能在生产环境里被信任的原因。
一个可执行文件同时提供运行时、包管理器、打包器和测试运行器,并重新实现了足够多的 Node API,让现有的包可以直接运行。
资料来源
官方
- oven-sh/bun on GitHub · 访问于 2026 年 10 月 26 日
- Bun README · 访问于 2026 年 10 月 26 日
- Bun LICENSE.md · 访问于 2026 年 10 月 26 日
- Bun LICENSE.md history on main · 访问于 2026 年 10 月 26 日
- Bun commit 2d67691: Readme (adds the MIT license section) · 访问于 2026 年 10 月 26 日
- Bun commit f543005: Add documentation (#2148) · 访问于 2026 年 10 月 26 日
- Bun commit d55ac0f: Move docs/project/licensing.md to LICENSE · 访问于 2026 年 10 月 26 日
- Bun commit 19bed6e: Made the LICENCE a markdown file · 访问于 2026 年 10 月 26 日
- Bun releases · 访问于 2026 年 10 月 26 日
- Bun release bun-v1.4.4 · 访问于 2026 年 10 月 26 日
- Bun release bun-v1.4.0 · 访问于 2026 年 10 月 26 日
- Bun commits on main · 访问于 2026 年 10 月 26 日
- Bun contributors · 访问于 2026 年 10 月 26 日
- Bun issues · 访问于 2026 年 10 月 26 日
- Bun homepage · 访问于 2026 年 10 月 26 日
- Bun Blog · 访问于 2026 年 10 月 26 日
- Bun 1.0 · 访问于 2026 年 10 月 26 日
- Bun 1.4 · 访问于 2026 年 10 月 26 日
- Bun v1.4.4 · 访问于 2026 年 10 月 26 日
- Rewriting Bun in Rust · 访问于 2026 年 10 月 26 日
- Bun is joining Anthropic · 访问于 2026 年 10 月 26 日
- oven-sh/webkit on GitHub · 访问于 2026 年 10 月 26 日
媒体与第三方
- Deno Deploy pricing · 访问于 2026 年 10 月 26 日
- Deno is joining Cloudflare · 访问于 2026 年 10 月 26 日
相关产品
- npm downloads API: bun, last month · 访问于 2026 年 10 月 26 日
- nodejs/node on GitHub · 访问于 2026 年 10 月 26 日
- nodejs/node GitHub release v24.22.1(发布于 2026-10-21) · 访问于 2026 年 10 月 26 日
- denoland/deno on GitHub · 访问于 2026 年 10 月 26 日
- Deno release v2.9.8 · 访问于 2026 年 10 月 26 日
数据
- bun on npm · 访问于 2026 年 10 月 26 日
动态与深度阅读
Bun AOT 新增 --trim 选项,可删除编译产物中未使用的部分
Bun 发布三项安全公告,1.4.4 已全部修复
Bun 官方公布了影响 1.4.3 及更早版本的三项安全公告:eMudhra 证书被攻破、brotli 解码器漏洞(HTTP2Shell),以及 HTTP/3「Header Accordions」攻击。三项均已在 Bun 1.4.4 修复,官方建议运行 bun upgrade 升级,并重新构建用 bun build --compile 打包的程序。
X 上 1 条讨论