Skip to content

【Zig 日报】75万行代码的“一夜突变”:Bun 从 Zig 转向 Rust 的实验性远征 #323

@jiacai2050

Description

@jiacai2050

最近 Hacker News 上的一个帖子引发了轩然大波。高性能 JavaScript 运行时 Bun 的创始人 Jarred Sumner 提交了一个巨大的分支,利用 AI(Claude)尝试将 Bun 的核心代码从 Zig 翻译成 Rust。

Image

这不仅仅是一个“换语言”的故事,它更像是一场关于 AI 辅助编程、开源社区治理以及底层技术选型的现实大戏。

一、 起因:一场由 11 小时与 75 万行代码引发的震动

Bun 一直以来都是 Zig 语言最成功的“代言人”。然而,Jarred 最近展示了一个名为 claude/phase-a-port 的实验性分支。在短短 11 小时内,通过 AI 的协助,Bun 产生了超过 75 万行 Rust 代码。

为什么是现在?为什么是 Rust?

  1. AI 的“语言偏见”:LLM(如 Claude 或 GPT-4)在训练数据中拥有的 Rust 代码远多于 Zig。这意味着 AI 编写、修复和优化 Rust 的效率极高,而对于 Zig 这种仍在快速演进、缺乏大型语料库的语言,AI 的表现往往捉襟见肘。
  2. 社区治理的裂痕:这是本次事件最深层的导火索。Zig 软件基金会(ZSF)对于 AI 生成的代码持非常严厉的抵制态度,并且在技术决策上与 Bun 这种追求“极致工程效率”的项目存在冲突。
  3. 招聘与生态:尽管 Zig 性能卓越,但寻找资深的 Zig 工程师极其困难。相比之下,Rust 的人才库和包生态(Crates.io)已经非常成熟。

二、 深入浅出:Zig 与 Rust 的技术博弈

对于普通开发者来说,Zig 和 Rust 就像是两把不同风格的神兵利器:

  • Zig 像是一把极其锋利、完全由你掌控的手术刀。它没有隐藏的控制流,内存分配完全由开发者手动管理。这种极致的透明性让 Bun 跑出了令人惊叹的速度,但也带来了巨大的维护成本和隐蔽的内存漏洞风险。
  • Rust 则更像是一套全自动的工业机床。它的“所有权系统”和“借用检查器”在编译阶段就能拦截大部分内存错误。虽然它有更陡峭的学习曲线和更慢的编译速度,但它提供了一种“长期安全”的保障。

这次迁移尝试的技术动机:
Bun 正在经历从“追求极限速度”到“追求稳定生产力”的转型。随着项目规模扩大,手动管理 Zig 的内存复杂度呈指数级增长,而 Rust 能够通过语言层面的强制约束,解决 Bun 目前面临的部分内存泄漏问题。

三、 社区观点:支持、质疑与担忧

Hacker News 的讨论中,观点呈现出两极分化:

  • 激进派(AI 拥护者):“这是软件工程的新里程碑!”他们认为,如果 AI 能够成功重写如此复杂的系统,那么语言之间的界限将变得模糊,开发重点将从“写代码”转向“系统设计”。
  • 审慎派(人工质量捍卫者):他们创造了一个词叫“代码废料(Slop)”。担忧这 75 万行 AI 生成的代码无人能进行 Code Review。一旦代码库中充斥着 AI 理解但人类难以维护的逻辑,长期的技术债将是毁灭性的。
  • Zig 忠实粉丝:他们感到一种“背叛”。Zig 为 Bun 提供了早期的性能名声,而 Bun 在功成名就后因为社区摩擦选择“跳槽”,这反映了开源社区在面对商业压力时的脆弱性。

四、 可能的影响:我们正处于转折点吗?

  1. 对 Zig 语言的打击:失去了 Bun 这个“杀手级应用”,Zig 在生产环境中的说服力可能会受到质疑,尤其是当开发者意识到语言生态对 AI 辅助开发的制约时。
  2. 重塑编程范式:Bun 的尝试证明了大规模代码迁移不再是“不可能的任务”。未来,公司可能不再因为由于历史包袱而被某种语言“套牢”,只要迁移工具够强,随时可以切换到更合适的语言。
  3. Rust 生态的进一步扩张:如果 Bun 成功转向 Rust,Rust 在高性能系统开发领域的统治地位将进一步巩固。

总结

目前,Bun 的 Rust 版还只是一个 POC(概念验证)。Jarred 本人也表示,这更多是为了观察 AI 的边界。

但无论结果如何,这一事件已经撕开了一个口子:未来的底层开发,不再仅仅是开发者与编译器之间的对话,更是开发者、AI 算力与开源社区治理逻辑之间的三角平衡。

对于我们每一个开发者来说,了解不同语言背后的哲学,保持对 AI 工具的审慎利用,或许是应对这类“突发重构”的最好方式。

扩延阅读

加入我们

Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来:

  1. 供稿,分享自己使用 Zig 的心得
  2. 改进 ZigCC 组织下的开源项目
  3. 加入微信群Telegram 群组

Metadata

Metadata

Assignees

No one assigned

    Labels

    日报daily report

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions