Bun 1.4 抛弃 Zig 全面转向 Rust:AI 只用11天重写53万行代码,JavaScript 运行时的 game 变了

2026年的 JavaScript 圈,最魔幻的一件事已经落地:Bun 1.4 正式发布,整个运行时的底层代码从 Zig 全面切换到 Rust。更让人意外的是操盘方式——创始人 Jarred Sumner 一个人,靠着 Claude Fable 模型和 Claude Code,11天跑通全部测试,完成了传统团队估计要干一年的迁移。

一年搬完53万行,账怎么算的

Bun 不是小项目。官方博客给出的数字:剔除注释后有 535,496 行 Zig 代码。按 Jarred Sumner 自己的估算,传统重写需要一支对代码库有完整上下文的小团队干整整一年,期间所有新功能、bug修复、安全补丁都得停摆。

这条路在以前想都不敢想。Jarred 在博客里说得很直白:重写历来是个糟糕的主意,真正的备选方案是什么都不做,然后永远修列表顶上那批 bug。

实际执行是这样的:先用大约3小时和 Claude 反复讨论 Zig 模式到 Rust 的映射方案,沉淀成一份600行的 PORTING.md 移植指南,这份指南后来还上了 Hacker News。接着 Claude 逐个文件把 .zig 翻译成 .rs,保持原有架构不动。自主循环反复执行:编译 Rust 代码、把报错喂回模型、迭代修补直到编译通过。全程只有1名工程师盯着 Claude Code。

结果:从启动到100%测试套件在所有平台通过,11天。

为什么要抛弃 Zig

Zig 没做错什么,问题出在 Bun 的特殊性上。JavaScript 是带垃圾回收的语言,JavaScriptCore 引擎对异常处理和 GC 有严格规则,而 Zig 像 C 一样不管理内存。垃圾回收的值和手动管理的值混在一起,生命周期成了灾难现场。

Bun v1.3.14 的修复清单就是证据,抽样看几条:

  • node:zlib 在异步 write 进行中调用 reset(),堆 use-after-free 崩溃
  • node:http2 里 JS 回调触发 hashmap rehash,内部流指针失效
  • fs.watch() 的 watcher 在 close() 后永不释放,每个 watcher 泄漏约6.5KB
  • CSS 解析器处理多层背景时的 double-free 崩溃

团队不是没努力。他们给 Zig 编译器打了补丁加入 Address Sanitizer,每次提交跑 ASAN,用谷歌 Project Zero 的 Fuzzilli 全天候模糊测试,还养了一批端到端内存泄漏测试。这套投入超过大多数项目,use-after-free 还是防不住。

Jarred 算过账:修复清单里大部分是 use-after-free、double-free 和错误路径忘记释放。在安全 Rust 里,这些全是编译错误。编译器的报错比任何风格指南都好使。

换语言的效果,Claude Code 先用上了

Bun 1.4 不只是换语言,性能数据同样能打:

  • Node.js 兼容性史上最大跳升:新增 1,517 项 Node 测试通过,累计 3,743 项;node:http、node:fs、node:cluster 通过率 97%,node:sqlite 和 node:events 100%
  • 空闲 CPU 占用降低5倍,内存占用最多降35%,Linux 启动快50%
  • 修复超过 2,900 个 issue

内存表现相当亮眼。压测环境下(100万请求、64并发),fastify 峰值内存从233MB压到120MB(降48%),Express 从169MB压到92MB(降46%),node:http 从135MB压到81MB,同场景 Node.js 26 是156MB、145MB、107MB。

最能说明问题的是 Claude Code 的生产数据:升级 Bun 1.4 后,CPU 占用 p99 从24%降到10%,p50 从5.8%降到2.5%,整整砍半。Claude Code 正是跑在 Bun 运行时上的。

Anthropic 早就押注了 Bun

时间线拉长看,这次重写早有铺垫。2025年12月,Anthropic 收购了 Bun,这是该公司第一次收购。当时 Claude Code 上线仅6个月就做到10亿美元年化收入,Anthropic 把 Bun 当成 Claude Code、Claude Agent SDK 和未来 AI 编程产品的基础设施来押注。

现在 Bun 月下载量超过2,200万,Claude Code 和 OpenCode 都跑在它上面,Vercel、Railway、DigitalOcean 提供第一方支持。bun.com 的博客列表里,1.3.x 系列每隔几天就修复上百个 issue,节奏密集得像在冲刺。

新工具箱:1.4 还塞了什么

除了换底层语言,1.4 的功能清单也值得一提:

  • Bun.WebView:内置无头浏览器自动化,Playwright 可以直接跑在 Bun 上
  • Bun.Image:内置图像处理 API
  • Bun.markdown:内置 CommonMark 兼容的 Markdown 解析器
  • Bun.cron():进程内定时任务调度器
  • Bun.Terminal:跨平台终端 API
  • bun run –parallel 和 bun test –parallel:并行跑脚本和测试
  • 全局虚拟存储:安装速度最高提升7倍
  • Windows ARM64 支持

Next.js 16.3 配合 Turbopack 可以用 bun –bun next build 直接构建,vitest 带覆盖率也能在 Bun 下运行,OpenTelemetry 和 dd-trace 的插桩正常工作。生态兼容这一关,Bun 过得越来越顺。

对开发者意味着什么

三点判断:

第一,重写的历史成本被 AI 改写了。535,496行代码、一年团队工作量、11天1人完成——这三个数字放在一起,就是2026年 AI 编程最硬的案例。Pragmatic Engineer 的评论点出了要害:AI 让以前根本不会立项的重写和迁移变得可行,前提是项目本身有完备的测试套件,并且有一位对代码库了如指掌的工程师盯着。

第二,运行时之争进入新阶段。Bun 2.0 时代 Node.js API 兼容性已到99.4%,如今1.4继续逼近100%,换 Rust 后内存安全有了编译器兜底。Node.js 26 十月刚转正 LTS,两边都在提速,最终受益的是写 JavaScript 的所有人。

第三,AI 写代码的分工模式清晰了:模型负责机械移植和迭代修复,人类负责架构判断和最终把关。Jarred 亲自审了对抗性代码审查 Agent 抓出的 Zig 与 Rust 之间的差异,还逐段对照读过两边代码。AI 干得快,但方向盘还在人手里。

一句话总结:这不是一次普通的版本升级,它是 AI 重写大型软件的第一个标杆案例。你的下一个 JavaScript 项目,运行时的选项清单可能要重新排一遍了。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

苏ICP备2025163703号-2   警徽苏公网安备32010502011527号