2026 年 5 月,Bun 项目完成了一次在软件开发史上近乎罕见的大规模代码迁移。
这次迁移从 5 月 3 日启动,到 5 月 14 日正式合并入主分支,只用了 11 天。
写代码只用了 6 天,并且整个过程公开。
但 Jarred Sumner 写博客总结却花了快一个月,比写代码的时间长多了。
这个 JavaScript 运行时原本拥有 535,496 行 Zig 代码,不包括注释;同时,约 20% 的代码由 C++ 编写,并嵌入了多个 C/C++ 库。
此次借助 AI 重写为 Rust,整个过程涉及超过 100 万行代码变更、6778 次提交,并在 Claude Code 中运行了大约 50 个动态工作流(dynamic workflows)。
根据 Sumner 披露的数据,这次重写在 API 层面消耗了 59 亿个未缓存输入 token、6.9 亿个输出 token,以及 720 亿个缓存输入 token 读取,按 API 定价计算约花费 16.5 万美元。
Sumner 说,这是目前技术所能达到的前沿水平。
他估计,如果让 3 名完全熟悉 Bun 代码库的工程师手工完成这次迁移,大约需要一年时间,而且在这一年里,团队几乎无法继续推进新功能开发、bug 修复和安全修复。
这次重写之后,Bun v1.3.14 成为最后一个 Zig 版本,Bun v1.4.0 将成为第一个 Rust 版本。
成果:从 6.7GB 内存泄漏到 609MB 稳定 Bun 最初是一个 Zig 项目,覆盖面非常广:它既是 JavaScript 和 TypeScript 转译器,也是打包器、包管理器、测试运行器、模块解析器、HTTP 和 WebSocket 客户端,还实现了 Node.js API 层。
正是这样的产品宽度,让 Bun 的 CLI 月下载量超过 2200 万次,并获得了 Vercel、Railway、DigitalOcean、Claude Code 和 OpenCode 等项目或公司的支持。
但同样是这种宽度,也给 Bun 带来了一些挑战。
特别是在 Bun v1.3.14 中,有一个让大家头疼已久的问题:连续执行 Bun.build()调用时,内存会不断累积,永不释放。
每次构建大约泄漏 3MB,看起来不多,但如果你运行的是一个开发服务器,每次请求都触发一次构建,那么内存就会被一点点吞噬,直到进程崩溃。
🔗 原始来源
如果你要核对细节,可以再看原文: InfoQ AI原文链接
AI热榜