8月20日,Bun发布了v1.4。知乎这个版本值得单独聊一聊,因为它是Bun把底层从Zig换成Rust之后的第一个正式版本。而且这次重写不是实验室里的尝鲜,Claude Code已经提前用上了:v2.1.181版本整合了Rust重构的Bun,在Linux上启动快了约10%。知乎官方给出的对比图里,Claude Code的启动时间从517ms降到了464ms。

对同时关注Rust生态的前端来说,这基本是"Rewrite It In Rust"浪潮第一次在主流开发工具上交出正式答卷。值不值得升级,先看看这几个月到底发生了什么。
那11天里发生了什么
Bun官方博客把重写的提交过程做成了一张按小时统计的热力图,从5月4日一直记录到5月14日。整段时间统计下来有6500多次提交、新增代码约178万行,细到每一个小时都有数据,比如美国时间5月4日早上7点到8点这一个小时,就是"May 4, 7am–8am PDT — 6 commits, +89,278 lines"。Bun官方博客

当时媒体的标题是"Claude花11天搞定Bun",连创始人都花了一个月才敢出来交底。36氪这场重写的成本是烧掉16万美元的token。知乎数字很炸,但真正值得记住的不是速度,而是后面发生的事。
写完11天,上线却用了3个月
为什么要重写?Bun作者Jarred Sumner自己给出的理由并不性感:不是嫌Zig慢,而是原版的内存泄漏问题防不胜防。知乎他试过给Zig编译器打补丁、上Linter、堆测试覆盖率,都达不到想要的效果,最后选择换一门有编译器兜底内存安全的语言。
争议也没缺席。Zig作者公开表达了对这次重写方式的批评,社区一度分成两派,比较中立的看法是"zig的作者只是实事求是的说了几个问题"。知乎
比争论更影响升级判断的是排期:这个稳定版比原计划跳票了一个半月,把2900个问题清零之后才发出来。36氪从"11天写完"到"三个月交付",中间这段差距,恰恰是看AI重写故事时最容易被忽略的部分。
v1.4实际带来了什么
抛开语言层面的变化,对写JavaScript的人来说,有三件事最相关。
第一,Node.js兼容性是1.0以来提升最大的一次。知乎官方Node.js测试套件的通过进度推进到了3743项,其中1517项是这一版新增通过的。

第二,内置了CPU profiler,采样结果可以直接用Chrome DevTools打开,性能排查不用再额外搭一套工具。

第三,"全家桶"思路继续推进:浏览器能力、图片处理、定时任务、终端交互这些常用能力,被直接放进Bun的二进制里。知乎对工具链类项目来说,这意味着能少装一堆npm包,也少一堆版本兼容的坑。
泼点冷水:Rust重写不是万能公式
Bun这次成了,不代表"用Rust重写"放之四海皆准。最近半年正好有两个反面参照。
一个是curl。这个被装进全球200多亿台设备的网络工具,基于Rust的重构实验做了4年,完成度推到95%,最终宣告失败。知乎从curl历史漏洞的类型分布能看出来,内存安全问题占了相当大的比重,这正是当年推动重写的主要理由,但4年下来证明:重写一个根深蒂固的老项目,比从零开始难一个量级。

另一个是"快"这个字要打折。跑分里Bun对Node领先3到4倍,但"快"在跑分和真实业务里,完全是两件事。知乎方向也未必永远向前:16万Star的OpenCode在2.0重写时,反而从Bun换回了Node。36氪
到底要不要升级:分三种情况
运行时之间的竞争,早就不只是比谁更快,而是工具链和生态位之争。知乎落到"要不要升到1.4"这个具体决定上,我把情况分成三类。
新项目、CLI、内部工具:可以直接上。兼容性提升是真实的,全家桶能省掉一批依赖,出了问题回退Node的成本也低,属于收益高、风险低的场景。
生产环境已经在跑Bun:建议等一等1.4.x的一两个补丁版本。底层语言整体更换之后的前一两周,通常是边缘案例集中暴露的窗口期,盯一下官方issue的节奏再动手,不差这几天。
还在Node.js上观望的:不用焦虑。这个版本没有改变力量对比,生态深度的差距依然存在。可以把自己项目里最依赖的几个特性拿去对一对官方的兼容进度,把它当成一个值得持续跟踪的选项,而不是必须马上做的决定。
接下来值得盯三个信号:Node兼容测试套件数字的更新速度、1.4之后第一个月的补丁节奏、以及Claude Code之后会不会出现第二个大体量的生产案例。这三个信号凑齐的时候,"该不该把生产流量切过去"这个问题,才算真正有答案。