Bun团队终于发官博分享他们用 Rust 重写 Bun的过程了,也透露了就是用的当时尚未发布的fable5来重写的。地址:bun.com/blog/bun-in-rust
Bun 过去遇到的大量问题集中在内存生命周期管理上,包括 use-after-free、double-free、内存泄漏、异常路径未释放资源等。Zig 让 Bun 早期快速成型,但在 Bun 这种同时连接 JavaScript GC、C/C++ 库和手动内存管理的大型系统里,靠审查和风格约束很难系统性避免这类错误。
团队最终选择用 Rust 重写,是因为 Rust 的所有权、借用检查和 Drop 能把很多问题提前变成编译期错误。
作者花了约 3 小时和 Claude 讨论 Zig 到 Rust 的模式映射,然后让它整理成 PORTING.md。接着又让 Claude 分析整个代码库里结构体字段的生命周期:哪些字段生命周期复杂、应该怎样表达成 Rust lifetime。这个结果被整理成 LIFETIMES.tsv,供后续其他 Claude 实例参考。
正式过程先用小文件试跑验证流程;确认可行后,启动大量 Claude Code 动态工作流并行迁移:一批 Claude 负责把 Zig 机械翻成 Rust,独立的 Claude 负责对抗式审查,另有 fixer 根据审查意见修复。初稿完成后,他们把约 16,000 个编译错误当作任务队列,按 crate 分发给多个 Claude 并行解决,再继续围绕本地测试和 CI 失败循环修复。

