用Rust重写Bun
Jarred Sumner详细介绍了使用AI编码代理将Bun从Zig重写为Rust的过程。TypeScript测试套件充当了合规套件,使得自动化移植成为可能。重写花费了约16.5万美元的API令牌,新的Rust版本已在Claude Code中上线,Linux上启动速度提升了10%。
Jarred Sumner 终于发布了关于将 Bun 从 Zig 重写为 Rust 的详细博文。虽然他已经从5月9日开始预告,但实际重写花费的时间更短。这篇文章详细描述了一次极其复杂的智能工程实践,涉及动态工作流、试运行、对抗性审查等多种技巧。
Sumner 在博文前半部分高度赞扬了 Zig,认为如果没有 Zig,Bun 不可能走到今天。但随后他指出了核心问题:Bun 的 bug 列表令人沮丧,尤其是大量 use-after-free、double-free 和忘记释放内存的错误。在安全的 Rust 中,这些错误是编译错误,并且有 RAII 自动清理机制。这促使了重写决定。
众所周知,从头重写大型软件通常是不明智的。Joel Spolsky 早在2000年就强调了这一点。但如今的前沿模型驱动的编码代理改变了这一等式。一个关键的促成因素是 Bun 的测试套件是用 TypeScript 编写的,这使它能够充当合规套件。代理框架利用这一套件自动化了大部分从 Zig 到 Rust 的移植工作。最初这只是个实验,但几天后测试通过率大幅上升,Sumner 的信心从“值得一试”转变为“我要合并这个版本”。
在11天的大部分时间里,Sumner 监控工作流,手动检查输出,并提示 Claude 修改循环以修复问题。面对超过100万行新增代码的拉取请求,他采用了一种语言无关的测试套件(包含百万级断言)、对抗性代码审查,并在出错时修复生成代码的过程而非手动修复代码。
新的 Rust 版本 Bun 已在 Claude Code 中使用近一个月。Claude Code v2.1.181(6月17日发布)及之后版本都使用了 Rust 移植版。Linux 上的启动速度提升了10%,但几乎没有人注意到。Sumner 表示“无聊是好事”。
在 Anthropic 工作的一个好处是不需要为令牌付费,因为这次重写估计花费了16.5万美元的 API 成本:共消耗59亿未缓存输入令牌、6.9亿输出令牌和720亿缓存输入令牌读取。这整个案例展示了如何利用协调的并行代理来承担雄心勃勃的项目。