needhelp
← 返回博客

Bun 在 6 天内用 AI 将 96 万行 Zig 代码重写为 Rust

作者 needhelp
Bun
Rust
Zig
AI 代码生成
JavaScript 运行时

Bun Zig 到 Rust 重写

2026 年 5 月 14 日,Bun 创始人 Jarred Sumner 合并了 PR #30412 —— 一个包含 6755 个提交的庞大分支,将 Bun 的核心从 Zig 重写为 Rust。该分支 claude/phase-a-p... 几乎完全由 Anthropic 的 Claude AI 自动生成。

数据令人震惊:

指标数值
提交数6,755
翻译代码~96 万行 Zig → Rust
耗时6 天
测试兼容性99.8%(Linux x64 glibc)
来源分支claude/phase-a-p...

究竟发生了什么

Bun 最初用 Zig 编写(Andrew Kelley 设计的系统编程语言)。Zig 赋予了 Bun 速度,但也限制了贡献者群体。相比之下,Rust 拥有庞大的生态系统、成熟的工具链和深厚的 LLVM 集成。

Anthropic 收购 Bun 之后,团队尝试使用 Claude agents 将整个 Zig 代码库翻译成 Rust。这项实验在一个高内存节点集群上运行了 6 天,生成了 6755 个提交。

结果:一个在 Linux x64 glibc 上通过了 Bun 现有测试套件 99.8% 的 Rust 代码库。

大规模的 AI 驱动迁移

这是 AI 驱动代码库迁移的首批大规模示范之一。方法如下:

  1. 源代码分析:Claude 分析 Zig 代码模式、内存管理惯用语法和公共 API 接口
  2. 增量翻译:每个 Zig 文件被逐步翻译为 Rust,通过基于属性的测试保持行为一致
  3. 并行执行:多个 Claude agent 实例在代码库上并行工作
  4. CI 验证:每个翻译后的模块都针对 Bun 的现有测试套件进行验证

AI 迁移流水线

争议

此次合并引发了开发者社区的激烈讨论:

Zig 社区

Bun 是 Zig 的旗舰项目——该语言最大、最引人注目的生产部署。Zig 软件基金会成员 Loris Cro 此前曾将 LLM 对 Zig 的贡献描述为”大多是负面的”。这次迁移被一些人视为对成就了 Bun 的语言的背叛。

“Vibe Porting”批判

Lobste.rs 上,开发者创造了”vibe porting”一词——一种在统计上有效但缺乏深入理解的 AI 驱动翻译。批评者认为,AI 生成的 Rust 代码遵循表面模式,缺乏 Rust 地道用法。

Jarred 的谨慎表态

在早期的 HN 评论中,Sumner 强调:“我们还未承诺重写。这些代码很有可能被完全废弃。“然而合并到 main 的事实表明,实验结果超出预期——或者策略已经转变。

这意味着什么

对 Bun 用户

短期内:没有任何变化。Rust 移植保持了 API 兼容性。长期来看:更大的贡献者群体、更好的 Rust 生态系统集成(如 tokiohyperreqwest 等 crate),以及可能更快的迭代速度。

对 Zig

Zig 失去了其旗舰项目。但该语言仍在继续发展——而 Bun 的移植可能会吸引那些想要在 Rust 基础上开发运行时的人。

对 AI 代码迁移

这是一个分水岭时刻。如果一个 96 万行的系统级运行时可以在 6 天内被 AI 移植,那么软件重写的经济学将发生根本性变化。维护、遗留代码迁移和语言移植——这些历史上昂贵且高风险的工作——变得可行。

社区反应

来源态度
Hacker News分歧明显——惊叹于 AI 能力,质疑代码质量
Lobste.rs批判为主——“vibe porting”讨论,担忧 Rust 地道性
Stork.ai 分析对 Zig vs Rust 动态的战略分析
DevClass中性报道,指出移植仍”半生不熟”
CosmicJS报道 99.8% 测试兼容性

展望

Bun 的 Rust 重写尚未完成——99.8% 不是 100%,审阅者已经指出了 AI 翻译不足的地方。但这项实验能够到达 main 分支,本身就标志着一个新篇章——不仅对 Bun,也对我们思考软件重写的方式。

正如 HN 上一位评论者所说:“过去的问题是’我们应该用 Rust 重写吗?‘现在的问题是’我们应该让 AI 帮我们用 Rust 重写吗?‘“

参考

分享本页