事件回顾

上周,Bun 的一个 GitHub 提交 引发了开发者社区的广泛关注。这个提交显示,Bun 团队正在将整个代码库从 Zig 语言迁移到 Rust。

这不是一个小改动。Bun 作为近年来最受关注的 JavaScript 运行时之一,其核心卖点之一就是使用 Zig 编写,号称比 Node.js 更快、更轻量。现在,他们正在重写这一切。

为什么从 Zig 转向 Rust?

官方并没有给出详尽的解释,但从社区的讨论中可以窥见一些端倪:

1. 人才生态

Rust 的开发者生态明显比 Zig 成熟。招聘 Rust 工程师相对容易,相关的工具链、库、文档也更完善。对于需要长期维护的大型项目,这是一个现实的考量。

2. 编译速度与工具链

Zig 的编译器以速度著称,但在实际开发中,Rust 的 cargo 生态和 IDE 支持(rust-analyzer)给开发者带来的体验可能更优。特别是随着项目规模增长,工具链的成熟度会影响开发效率。

3. 风险分散

把核心基础设施押注在一门相对年轻的语言上,本身就存在风险。Zig 还在快速迭代中,语言特性和标准库都可能发生不兼容的变化。

社区反应

这件事在 Hacker News 上获得了 571 分、406 条评论 的热度。讨论的核心围绕着几个层面:

  • 语言性能之争:Zig 和 Rust 在运行时性能上其实差别不大,但 Rust 的内存安全保证让它在大型项目中更具吸引力。
  • 前端工具链的 Rust 化:从 esbuild、swc 到 Rolldown,前端工具链正在经历一场 Rust 革命。Bun 的转向只是这个大趋势的一部分。
  • 对 Zig 的打击:有人认为这会影响 Zig 的声誉,但也有人指出,Bun 的成功本身已经为 Zig 做了很好的宣传。

对开发者的影响

对于普通开发者来说,这个变化短期内影响不大:

  • Bun 的 API 和设计哲学不会改变
  • 用户安装和使用 Bun 的方式保持不变
  • 性能特征预计也会维持现有水平

但从长期来看,这意味着 Bun 将能更好地利用 Rust 生态,引入更多成熟的库,开发速度可能会加快。

一个值得思考的趋势

Deno(另一个 JS 运行时)选择了 Rust + V8 的技术栈,现在 Bun 也在向 Rust 靠拢。Node.js 本身虽然用 C++ 编写,但其新工具(如 Corepack 的后续替代方案)也在考虑 Rust。

这似乎在说明一件事:现代 JavaScript 工具链的基础设施层,正在向 Rust 收敛

这不是因为 JavaScript 开发者突然爱上了系统编程,而是因为他们需要性能。Rust 恰好提供了一种相对安全、性能优秀、生态成熟的选择。


文章发表于 gumi.ink