返回信息流
新闻事件
A重点84
Simon Willison
1 个来源

用Rust重写Bun

Bun的创建者Jarred Sumner详细说明了将JavaScript运行时从Zig重写为Rust的决定,理由是内存管理方面的挑战。重写过程主要借助AI编程代理自动完成,利用了Bun的TypeScript测试套件作为一致性测试。这标志着软件工程实践的重大转变,AI代理使得以往被认为不可行的大规模重写成为可能。

SynthePulse Insight · AI 深度解读

用AI智能体重写Bun:从Zig到Rust的颠覆性工程实践

版本 1 · 1 个来源

在短短11天内,花费约16.5万美元的API费用,Jarred Sumner成功将Bun运行时从Zig重写为Rust。这一案例挑战了软件工程界“永远不要从头重写”的金科玉律,展示了前沿AI模型如何根本性地改变大型项目的迁移范式。

  • Bun的Zig版本因内存管理问题(use-after-free、double-free等)积累了大量崩溃缺陷,团队决定用Rust重写。
  • 借助TypeScript编写的测试套件(百万级断言)作为一致性基准,AI代理在11天内完成了百万行代码的迁移。
  • 重写成本约16.5万美元,消耗5.9B未缓存输入token、690M输出token及72B缓存输入token读取。
  • 新的Rust版本已集成至Claude Code v2.1.181(2026年6月17日发布),启动速度提升10%,用户无感知。
  • 关键创新:通过修复生成代码的流程而非手工修复代码,并采用对抗性代码审查。
  • 此案例证明,当拥有语言无关的测试套件时,AI代理可使“停止世界重写”变得可行。
展开章节目录重写动机与挑战

重写动机与挑战

Jarred Sumner在博文中首先高度赞扬了Zig语言,认为没有Zig,Bun不可能走到今天。然而,随着项目发展,Bug列表越来越长——主要是内存管理错误(如use-after-free、double-free、错误路径下的忘记释放)。这些错误让Jarred“晚上睡不着觉”,担心Bun的崩溃问题。他坦言问题不在Zig,而在于Bun同时使用垃圾回收和手动内存管理,这种混合模式没有语言能完美支持。

选择Rust的核心原因是其安全内存管理:use-after-free、double-free等错误在安全Rust中会被编译器捕获,且RAII(资源获取即初始化)机制通过Drop实现自动清理。此外,Rust的所有权模型能从根源上消除一大类内存错误。

AI代理驱动的重写过程

重写的关键前提是Bun的测试套件完全用TypeScript编写,并且语言无关。这意味着它可以充当一致性测试套件,自动验证新实现是否匹配原有行为。Jarred最初只是将此作为实验,使用早期版本的Fable模型(现为Mythos/Fable的一部分)尝试自动从Zig移植到Rust。出乎意料的是,几天内就有高比例的测试通过,新生成的Rust代码与原始Zig代码结构高度吻合。他的态度从“值得一试”转变为“我要合并这个”。

在11天中,Jarred主要通过监控工作流、手动检查输出、并提示Claude编辑循环来修复问题。整个重写消耗了5.9B未缓存输入token、690M输出token和72B缓存输入token,按API定价估算约16.5万美元(得益于Anthropic员工免token费)。最终生成了一个超过+100万行新增代码的Pull Request。

合并如此庞大的PR需要极端谨慎的策略:利用语言无关的测试套件(百万断言)进行自动验证,实施对抗性代码审查,并在出问题时优先修复生成代码的流程而非手工修补代码。这种思路确保了长期可持续性。

成本、收益与安全考量

经济账上,16.5万美元的API费用看似高昂,但考虑到这是从零重写一个成熟的运行时,传统人力成本可能远高于此。收益方面,新Rust版本集成到Claude Code v2.1.181后,Linux上启动速度提升10%,但对用户而言几乎无感知——这正是设计目标:“无聊就是好”。

安全性是核心驱动力。Rust的安全保证将大量运行时错误转化为编译时错误,显著降低了生产环境崩溃的风险。不过,Jarred也承认,这一重写依赖于AI的“当前能力”,且预合并阶段的token消耗巨大,未来是否持续可行需进一步观察。

对软件工程范式的启示

Joel Spolsky在2000年的经典文章《 Things You Should Never Do, Part I 》中警告永远不要重写大型软件。但Jarred的案例表明,当AI代理能够利用语言无关的测试套件、动态工作流、对抗性审查和流程修复机制时,这一旧规则可能被打破。

关键要素包括:独立于语言的高质量测试套件、充足的token预算、对AI输出进行系统性审查,以及“修复流程而非代码”的工程思维。这为其他面临类似重写困境的项目提供了可复用的方法论。

然而,当前的成功仍高度依赖特定条件:测试套件的完备性、模型能力(此处为Fable)、以及足够的经济投入。长期稳定性和代码可维护性仍有待时间检验。

可信度边界

本文基于Jarred Sumner的官方博文和Simon Willison的分析,数据来源直接引用,可靠性高。但重写后的长期稳定性及潜在问题尚未有充分验证。

核心结论

Bun从Zig到Rust的AI辅助重写案例表明,在拥有语言无关测试套件的前提下,前沿AI模型能够以可控成本在短期内完成大型系统重写,挑战了传统“永不重写”的工程智慧。未来类似实践的成败将取决于测试覆盖率、模型能力演进以及流程自动化程度。

主报道

Simon Willison

主报道来源