AI News HubLIVE
站内改写2 分钟阅读

以AI速度合并

Bun项目使用AI将核心代码从Zig重写为Rust,引发了关于AI生成代码、内存安全和测试可靠性的广泛讨论。文章分析了三个不同视角的争议,并指出测试用例通过并不等同于代码验证,强调了更强验证标准的重要性。

来源Hacker News AI作者: taubek

2026年5月,JavaScript运行时Bun(内置于Claude Code)将其核心代码从Zig重写为Rust,涉及约100万行代码、6502次提交。Bun创始人Jarred Sumner坦言“我们已有数月未亲手编写代码”。媒体以“AI速度合并”报道此事,但两个月后,Bun、Zig创始人以及资深开发者分别发文,揭示了这场重写背后的复杂真相。

Bun官方解释称,重写源于内存安全问题。混合JavaScript垃圾回收引擎与手动内存管理的Zig导致每周出现多次释放后使用(use-after-free)等错误。Rust的编译器可将此类问题转化为编译错误。然而,Zig创始人Andrew Kelley反驳道,问题不在于语言本身。他指出Bun的Zig代码长期存在“堆叠上的黑客”问题,且双方关系早已破裂——Anthropic收购后,Bun停止了对Zig软件基金会的每年6万美元捐款,并忽视会议邀请。Kelley直言,当得知重写时,“我们欣喜若狂”。

资深开发者Ray Myers则从营销角度分析,认为管理层选择了既能修复内存错误又能展示AI能力的方案。他指出,Bun的论证文章缺少利弊分析、编译速度等关键内容。

三方争议的核心矛盾在于测试覆盖率的有效性。Bun声称通过了6万项测试(138万个断言),但Kelley质问:如果测试套件足够验证100万行AI生成的Rust代码,为何Zig版本仍存在大量错误?Myers也从外部指出,生成重写代码的模型无法捕获释放后使用错误。最终,Bun承认重写后存在19个已知回归错误,每个都是忠实翻译但在新语言中语义不同的问题,例如Zig的assert在调试和发布版本中行为一致,而Rust的debug_assert!在发布版本中会消除表达式。

Bun的重写流程堪称严谨:先编写端口指南和生命周期表,然后使用多Claude架构进行代码生成和对抗性审查。最高峰时64个Claude并行运行11天,耗资16.5万美元。尽管如此,仍未能避免这些语义错误。

相比之下,Ladybird浏览器在2月使用类似AI工具将JavaScript引擎前端从C++重写为Rust时,采用了更强的标准:要求新旧管道的输出字节一致。通过52,898个test262测试和12,461个回归测试的零差异比较,以及实时网页锁步浏览,成功避免了类似回归问题。

这场争论的最终教训是:生成代码的成本已大幅下降,但验证的差距仍是全部工作。Bun将合并标准定为测试通过,但测试仅能验证已知行为,而重写错误恰恰隐藏于未知行为中。更可靠的方法是定义和执行“行为一致”标准,通过输出差异检测和锁步测试来确保新代码准确模拟旧代码的所有行为。

“AI速度合并”确实是现实,但它转移了真正的焦点:生成几乎免费,但验证仍是全部工作。未来,当组织考虑让AI代理重写关键系统时,应采用更强的合并标准,并将人工审查作为最后防线。