Bun 从 Zig 迁移到 Rust:JavaScript 运行时生态的又一次转向
事件回顾
上周,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