Bun 把自己改写进 Rust,不像给旧车换发动机,更像把一张旧底片丢进显影液:原来以为是夜色的地方,慢慢浮出裂纹。我的判断很明确:Rust 对 Bun 最大价值,不是提速,不是时髦,而是把未定义行为显影。

这事最反常识的地方在这儿:一次成功的 Rust 重写,第一阶段看上去未必更“稳定”,反而可能更吵、更烦、更多红字。不是病更多了,是终于做 CT 了。以前那些错,不是没有,只是没被抓现行。

官方自己其实说得很直白。Bun 宣布合并“Rewrite Bun in Rust”时,重点不在“跑分狂飙”,而在终于有了编译器和工具去抓、去防内存错误。更关键的是,它还特意强调:架构基本没变,数据结构基本没变。也就是说,这不是把一只猫改造成一只豹;这更像是把屋里的灯全打开,顺手掀了几块地板。

一门语言最贵的美德,不是优雅,是不替你隐瞒尸体。

先看第一个场景。2026 年 5 月 17 日,Bun 把 Miri(Rust 里专门揪运行期未定义行为的解释器)接进仓库。刚一通电,它就逮住了一个池子结构:代码先把一个裸指针借出去,转身又继续改自己的内部缓冲区。翻成人话,就是仓库管理员把 17 号柜的钥匙给了你,回头却把整排柜子重排了一遍,还假装“钥匙当然还能用”。在 Zig 里,这种事可以靠经验、靠手感、靠“我知道我在干嘛”硬撑;在 Miri 面前,它被直接判成未定义行为。

第二个场景更狠。7 月 6 日,Bun 修了一串问题:弱引用、对象池、JSON 解析带。最有戏剧性的是那个小得不能再小的 JSON:{"a":{"b":1}}。内层对象刚造出来,解析器又继续往同一块内存上追加外层内容。表面看,内层对象已经“出生”;实际上,它脚下的木板还在被木匠抽换。你以为这是解析 JSON,其实像是在边写户口本边拆户籍科的柜子。Rust 没发明这个坑,但 Rust 逼着人承认:这个坑一直在。

未定义行为最狡猾的地方,不是它会出错,而是它常常不出错。

第三个场景,像一出黑色喜剧。7 月 7 日,Bun 修了一个 HTTPS 抓取里的崩溃,试验版里这个崩溃每天能冒出十几次。更耐人寻味的是:它“第一次出现在 Rust 试验版里”,在 Zig 版本里“从未观察到”。很多人一看就会说,哦,Rust 重写把系统搞坏了。恰恰相反。提交说明里写得很清楚:Zig 那边对空值的读取,在发布模式里可能直接滑进沉默的未定义行为;Rust 这边则把它抡成了响亮的 panic(程序当场炸给你看)。以前是哑雷,现在终于响了。

第四个场景甚至更像日常生活。fs.readFile(..., "utf16le") 这条路径里,Bun 曾把一块按 1 字节规则租来的内存,硬说成是按 2 字节规则租来的。之所以一直没炸,不是因为它对,而是因为 mimalloc(内存分配器)这个房东脾气太好,给你的房间比合同写得还宽。你今天在里面横着睡,房东不吭声;明天换一个房东,整栋楼都可能掀桌子。Rust 在这里的作用,不是美化合同,而是逼你别再拿宽容当合法。

所谓稳定,很多时候不是没病,只是没有体检。

所以,Rewriting Bun in Rust 真正改变的,不是“语言名字”,而是“错误的社会地位”。以前很多内存问题像县城里的熟人社会:大家都知道有猫腻,但靠默契维持秩序,不闹上新闻就算太平。Rust 把这套熟人社会改成了档案社会。谁拥有这块内存,谁只是借住,谁已经搬走,谁还在名单上,最好白纸黑字写出来。写不出来?那就别装作天下太平。

这也是为什么我觉得,盯着“Rust 会不会让 Bun 更快”其实有点像盯着医院新买的 CT 机问:拍片速度有没有提升 8%。当然,速度重要,体积缩小三五兆也好看,但这些都还是表层收益。真正贵的,是把那些过去靠运气、靠经验、靠夜里两点半的排查才能摸到的幽灵,变成白天就能看见、能复现、能修掉的东西。

Rust 对 Bun 最大的贡献,不是把错误消灭了,而是把错误从地下室赶到了客厅。

一套大型系统最吃人的成本,常常不是功能难写,而是鬼难抓。团队几年里被内存问题拖走的开发时间、调试时间、心智税,往往比一张漂亮跑分表更说明现实。Bun 这次重写真正值钱的地方,不是“换了门语言”,而是终于不再让未定义行为藏在地毯下面装家具。

所以,关于 Rewriting Bun in Rust,我的结论不变:这件事最深的意义,不是 Bun 变成了 Rust 项目,而是 Bun 开始拥有一套更不肯替它撒谎的体检体系。语言在这里不是勋章,是验尸灯;不是香水,是显影液。

参考:Bun 官方 PR“Rewrite Bun in Rust”加入 Miri 并修复 HiveArray 未定义行为修复 WeakPtr、ObjectPool 与 JSON tape 的未定义行为修复 chunked response 路径里的空值崩溃修复 utf16le 读取路径中的布局未定义行为


别人聊 AI,我们测 AI——每个结论都能下载原始数据自己复算。 🔗 官网 👉 https://crawdpad.com