上周,全栈 JavaScript 工具包 Bun 宣布,他们花费了相当于 165,000 美元的算力,运行 64 个并行的 Claude 智能体,在短短 11 天内将其整个代码库从 Zig 重构为 Rust。通常,将代码库完全重写为 Rust 是初创企业在市场无形之手打击下走向末路的挽歌,但在这种情况下,它可能真的奏效了。这百万行的移植修复了 128 个旧漏洞,使二进制文件体积缩小了 20%,让整体速度提升了几个百分点,并且自六月以来一直在为 Claude Code 提供支持,而无人察觉。
但并非所有人都为此庆祝。Zig 的创建者 Andrew Kelly 回应称,这些基准测试具有误导性,并且 Zig 团队实际上对 Bun 的离开感到如释重负,因为他们在内部一直将 Bun 的代码库作为“如何不写 Zig”的反面教材。此外,据传 Bun 的创始人 Jared 在大型语言模型(LLM)出现之前,就已经在产出低质量的代码。在今天的视频中,我们将揭开历史上最大规模 AI 驱动重构的真相,并判定在这场“离婚”中,谁应获得公众舆论的抚养权。
现在是 2026 年 7 月 15 日,欢迎收看 Code Report。26 年前,当我在仓库里扔日本空气时,Joel Spolski 撰写了软件历史上最著名的博客文章之一,他声称重写代码库是软件公司可能犯下的最糟糕的战略错误。他的例子是 Netscape,他们花了三年时间重写浏览器,而微软则趁机窃取了他们的用户并洗劫了他们的村庄。
那么,是什么让 Bun 屈服于这一“单一最糟糕战略错误”的诱惑呢?其实,这与导致你 CS 101 课程不及格、转专业并最终成为 JavaScript 开发者的原因相同:糟糕的内存管理。Bun 最初是用 Zig 语言编写的,在这种语言中,你需要手动管理内存,编译器提供的帮助很少。这通常是低级语言的特性,因为 Bun 嵌入了 JavaScript Core,即 Safari 的垃圾回收 JavaScript 引擎。
Bun 的一半对象由垃圾回收器管理,而另一半则存在于手动管理的 Zig 内存中,这两者必须不断相互管理指针,导致代码库看起来像是感染了爆炸性腹泻寄生虫。Bun 的更新日志中充满了由此引发的漏洞,例如代码读取已释放的内存、双重释放同一块内存,或者根本从未释放内存。
有一次,开发服务器每次重建时都会泄漏三兆字节的内存,仅仅因为一个错误路径忘记清理自身。虽然内存漏洞本身可能不足以证明重写的合理性,但还有一个更大的问题。一旦 Anthropic 收购了 Bun,其未来的大部分代码将由 Claude 编写。而 Zig 以反 AI 著称,他们甚至拒绝 LLM 生成的拉取请求,如果你承认 AI 发现了漏洞,他们甚至会关闭你的安全报告。
此外,由于互联网上几乎没有 Zig 代码可供训练,且该语言尚未达到 1.0 版本,不断引入破坏性变更,模型在编写 Zig 代码方面远不如编写更成熟的语言那样出色。因此,在五月初,Jared 决定通过将所有 535,000 行 Zig 代码移植到 Rust 来一次性解决这两个问题。Rust 的借用检查器将内存管理移入类型系统,使大多数内存管理错误成为编译时错误,而非运行时错误。
最有趣的部分在于他们是如何做到的。他们首先让 Claude 花费数小时研究代码库,以生成一份移植指南。然后运行了一个工作流,将每个结构体字段的生命周期追踪到一个巨大的电子表格中,本质上记录了关于“谁在何时释放什么”的多年部落知识。
在此基础上,他们使用了分布在四个 Git 仓库中的 64 个并行 Claude 智能体,处理了 1,448 个文件,一度每分钟生成 1,300 行 Rust 代码。为了保持智能体的诚实,每个实现者都配对了两个对抗性审查者 Claude,它们在独立的上下文窗口中运行,唯一的工作就是假设代码是错误的并找出原因。
11 天,6,522 次提交,以及原本可能花费 165,000 美元的费用(如果他们不拥有代币赌场的话),Bun 的整个测试套件在所有平台上都通过了。移植修复了 128 个长期存在的漏洞,解决了开发服务器的内存泄漏问题,二进制文件缩小了 20%。而 Zig 的创建者 Andrew Kelly 则彻底炸毛了。
在回应中,Andrew 明确表示这场“离婚”是多年酝酿的结果。据他称,Zig 团队多年来一直看着 Bun 用其代码库让他们的语言蒙羞,该代码库被私下用作“如何不写 Zig”的范例。他还进行了一些人身攻击,指出 Jared 18 岁就辍学去拿 Peter Thiel 的钱并追逐创业荣耀,Andrew 将此归咎于 Jared 的“初学者能量”,并转述称 Jared 并不是一个很好的管理者。
但在怨恨之下,隐藏着一些合理的技术抱怨。他认为性能提升主要来自链接时优化,而 Zig 一直支持这一点;二进制文件大小的减少与 Rust 无关;并且 Jared 巧妙地省略了对编译时间的提及,而在这一点上 Zig 几乎肯定胜出。
那么,谁应获得公众舆论的抚养权呢?可能谁都不配。Zig 失去了它最著名的用户,Andrew 失去了冷静,而 Jared 被一位编译器工程师公开诊断为“初学者能量”。但如果你打算将自己的代码库重写为 Rust,或者只是想编写更好的代码,那么你需要了解 Code Rabbit,即本期视频的主办方。
用 AI 编写数千行代码感觉很棒,直到你必须手动审查所有这些不洁的代码。Code Rabbit Review 将你的拉取请求变成你真正会完成的引导式演练。它将相关的更改分组为批次,按层排序,并添加 AI 摘要,以便你可以按正确的顺序快速浏览所有更改。
与其面对一个巨大的扁平差异,它感觉就像是你拉取请求的集成开发环境。你的评论和批准仍然原生地返回到 GitHub。当有帮助时,Code Rabbit 可以为你的调用流程、状态更改和模式更新生成内联图表。超过 100,000 个开源项目,如 Bun 和 Next.js,都在使用 Code Rabbit,你可以通过下面的链接免费试用。
但这就是 Code Report 的全部内容。感谢观看,我们下期再见。