用Rust重写Bun
2026年7月8日 - 链接博客
用Rust重写Bun( 来源)Jarred Sumner早在5月9日就预告了这篇博文( 链接),讲述他如何将Bun从Zig语言迁移到Rust。而博文的酝酿时间,竟比他完成重写的时间还要长。
说实话,这份等待完全值得。文章详细记录了一项极具突破性的智能工程实践,涵盖动态工作流、测试验证、对抗式审查等一系列精妙技巧。
Jarred在文章前半段盛赞Zig,正是凭借它,Bun才得以发展到今天的规模。随后,文章提出了核心观点(重点为笔者所加):
我们的bug清单越积越长,我每晚都在为Bun的崩溃问题辗转难眠。但我不怪Zig——其他Zig用户并未遇到类似问题,毕竟将垃圾回收(GC)与手动内存管理结合的场景极为罕见,没有哪种语言会专门针对这种情况设计。如果没有Zig,Bun走不到今天,我始终对此心怀感激。
直到不久前,对于Bun这类项目而言,编程语言的选择都是单向不可逆的决策。
所有人都知道,绝不能贸然停下项目,彻底重写大型软件。早在2000年4月,Joel Spolsky就在《你绝不该做的事(上)》链接中强调过这一点!
而如今,由前沿模型驱动的编码智能体,彻底改变了这一局面。
为什么选择Rust?核心原因还是内存管理难题:
我们的bug清单中,很大一部分是野指针访问、重复释放、错误路径下内存泄漏这类问题。在安全Rust中,这些都会被编译器直接拦截,再借助
Drop实现类似RAII的自动内存清理。
重写得以顺利推进的关键前提是:Bun的测试套件由TypeScript编写,这意味着它可以直接作为一致性校验套件。借助智能体框架,我们得以自动化完成从Zig到Rust的初步移植——最初只是为了测试一款早期模型,也就是后来的Mythos/Fable。
一开始我根本没抱希望。但几天之后,大部分测试用例都通过了,而且新生成的Rust代码与原Zig代码库高度匹配。我的态度从"值得一试"彻底转变为"必须合并"。[...]
在那11天(以及之后的时间)里,我主要负责监控工作流:人工审核输出结果、排查问题,再提示Claude调整循环逻辑以修复bug。
面对一个新增超百万行代码的PR,该如何审查?又该如何建立信心,负责任地合并由大语言模型生成的海量代码?
答案是:一套独立于语言、包含百万级断言的测试套件,再加上对抗式代码审查;一旦出现问题,先修复代码生成流程,而非直接手动修改代码。
Bun的Rust新版本已在Claude Code中运行近一个月:
Claude Code v2.1.181(6月17日发布)及后续版本均采用Bun的Rust移植版。在Linux系统上启动速度提升了10%,除此之外几乎无人察觉。这种"平淡"恰恰是好事。
在Anthropic工作的一大福利就是无需为API令牌付费——这可帮了大忙,毕竟这次重写的预估成本高达16.5万美元!
合并前,项目共消耗了59亿次非缓存输入令牌、6.9亿次输出令牌,以及720亿次缓存输入令牌读取——按API定价计算,总成本约16.5万美元。
这整个项目堪称一个极具启发性的案例:借助协同并行的智能体,我们得以攻克看似遥不可及的宏大目标。
近期文章
- GPT-5.6新系列:Luna、Terra、Sol- 2026年7月9日
- sqlite-utils 4.0版本,新增数据库 schema 迁移功能- 2026年7月7日
- sqlite-utils 4.0rc2版本,主要由Claude Fable生成(成本约149.25美元)- 2026年7月5日