Bun 项目刚刚完成了一次惊人的技术跨越。5月14日,Bun 正式宣布其核心运行时已从 Zig 重写为 Rust——这个版本包含 6755 个提交,二进制文件体积缩小 3-8 MB,性能测试在各个平台上均达到或超越原有水平。这不是一次简单的语言迁移,而是一次关于工程质量和长期维护的战略决策。

Jarred Sumner(Bun 的创始人)在公告中透露,这次重写已经通过了 Bun 原有的完整测试套件,覆盖所有平台。更重要的是,它修复了多个长期存在的内存泄漏和 flaky 测试问题。对于一个拥有 9 万星、每周下载量数十万次的开源项目来说,这种稳定性提升意义重大——内存问题往往是最难调试、最耗时间的 bug 来源。

BTW,这个 PR 包含 100 多万行的新增代码直接把 GitHub 搞爆了,导致页面无法加载:


https://github.com/oven-sh/bun/pull/30412
从技术角度看,这次重写保持了两个关键不变:相同的架构设计,相同的数据结构。Bun 依然使用极少的第三方库,依然不依赖 async Rust。这意味着重写不是推倒重来,而是在保持原有架构优势的基础上,用更安全的语言替换底层实现。这种"手术刀式"的重构策略,体现了工程团队对代码质量和性能的极致追求。
Rust 的价值在于其编译器提供的内存安全保证。过去多年,内存 bug 消耗了开发团队大量时间进行调试和修复。Rust 的所有权系统和借用检查器能够在编译时捕获这类问题,从根本上杜绝了 dangling pointer、buffer overflow 等常见漏洞。对于一个每天处理数十亿次请求的 JavaScript 运行时来说,这种保障的价值难以估量。
目前,这一版本已通过 bun upgrade --canary 开放测试。Jarred 也坦诚地提醒:优化工作仍在进行中,最终版本发布前还会有一些清理工作。这是一个成熟开源项目应有的节奏——不为了抢首发而牺牲质量,用 canary 频道让早期用户帮助发现问题,同时保持 stable 频道的稳定性。
对于整个 JavaScript 生态来说,Bun 的这次尝试提供了一个有价值的参考:当一个项目发展到足够大规模时,如何在保持向后兼容的同时,为未来的稳定性投资?用更现代的系统编程语言重构核心组件,是一个值得考虑的选择。
来源:GitHub (https://github.com/oven-sh/bun/pull/30412)