Bun 宣布使用 Rust 重写核心:从 Zig 转向 Rust 的技术演进与稳定性抉择
高性能 JavaScript 运行时 Bun 官方宣布正在使用 Rust 语言进行重写。自 2025 年 12 月被 Anthropic 收购以来,Bun 团队利用 Claude Fable 5 辅助开发。尽管 Zig 曾助力 Bun 在一年内快速构建出涵盖转译、打包及包管理等庞大功能的生态,但随着每月下载量突破 2200 万,原有的 Zig 实现面临严峻的稳定性挑战。本次重写旨在通过 Rust 解决频繁出现的内存安全漏洞及系统崩溃问题。
核心要点
- 技术栈转型:Bun 正在从最初的 Zig 语言重写为 Rust,旨在提升系统的长期稳定性。
- AI 辅助开发:团队在重写过程中深度使用了 Anthropic 尚未发布的 Claude Fable 5 模型。
- 收购背景:Bun 已于 2025 年 12 月被 AI 巨头 Anthropic 收购,目前团队在 Anthropic 内部运作。
- 稳定性挑战:原文披露了 Zig 版本中存在的多个严重内存安全问题,包括
node:zlib和node:http2中的堆使用后释放(heap-use-after-free)崩溃。 - 市场地位:Bun 目前每月 CLI 下载量超过 2200 万次,并获得 Vercel、Railway 等主流平台的原生支持。
详细分析
从 Zig 到 Rust:成也性能,困于稳定
Bun 的诞生极具传奇色彩。作者最初受 esbuild 启发,于 2021 年选择 Zig 语言进行开发,凭借 Zig 对底层性能的极致控制,在短短一年内独自完成了包括转译器、打包机、包管理器及测试运行器在内的庞大工程。Zig 确实成就了 Bun 的早期爆发,使其在性能基准测试中遥遥领先。然而,随着项目规模的急剧扩张,Zig 在内存管理上的复杂性开始显现。原文中提到的多个 v1.3.14 版本的 Bug 实例,如在异步写入过程中重置流导致的崩溃,反映出在处理复杂的重入(re-entrant)回调和多线程交互时,原有架构难以保证绝对的安全。
Anthropic 的介入与 AI 驱动的重构
2025 年底被 Anthropic 收购是 Bun 发展史上的重要转折点。这不仅为团队提供了更强大的资源支持,更直接引入了顶尖的 AI 协作能力。作者透露,此次 Rust 重写的大部分工作是在 Claude Fable 5 的辅助下完成的。这标志着大型基础软件的开发模式正在发生变化:从纯人工编写底层代码,转向由经验丰富的架构师引导、高性能 AI 模型执行代码迁移与重构的新阶段。这种模式可能极大地缩短了从 Zig 到 Rust 这种跨语言重写的周期。
庞大生态下的稳定性压力
Bun 的目标不仅仅是一个运行时,它试图兼容 Node.js 的绝大部分 API(如 fs, net, tls 等)。这种“大而全”的定位在带来便利的同时,也带来了巨大的维护压力。目前 Bun 已成为 Claude Code 和 OpenCode 等流行工具的底层运行时,月下载量高达 2200 万。在如此高的工业负载下,任何微小的内存泄漏或崩溃都会被无限放大。转向 Rust 这一拥有强内存安全保证的语言,是 Bun 走向成熟、成为企业级生产环境首选运行时的必然选择。
行业影响
Bun 转向 Rust 可能会在开发者社区引发对 Zig 与 Rust 在大型项目适用性上的新一轮讨论。对于 JavaScript 生态而言,这预示着 Bun 将进入一个以“稳定性”为核心的新阶段,进一步挑战 Node.js 的统治地位。同时,这也展示了 AI 公司(如 Anthropic)如何通过收购核心基础设施工具来完善其 AI 开发工具链,形成从模型到运行时的全栈闭环。
常见问题
问题 1:为什么 Bun 最初选择 Zig 而不是 Rust?
作者在 2021 年被 Zig 的单页语言参考手册所吸引,看重其对底层性能的精细控制。Zig 简洁的特性使得作者能在一年内独自构建出功能极其复杂的 Bun 初始版本,这是当时其他语言难以实现的开发效率。
问题 2:重写后的 Bun 会失去性能优势吗?
虽然原文未详细对比性能变化,但 Rust 同样是高性能系统级语言。重写的主要动力是解决稳定性问题(如 use-after-free 崩溃),在 Rust 的所有权模型下,这些问题可以在编译期或通过更安全的抽象得到解决,从而提供更可靠的服务。
问题 3:Claude Fable 5 在重写中起到了什么作用?
作者明确表示在 Rust 重写过程中大量使用了预发布版本的 Claude Fable 5。这表明 AI 在理解复杂的 Zig 逻辑并将其转换为安全的 Rust 代码方面发挥了关键的辅助作用,加速了项目的迭代进度。


