2026年5月14日,一个PR悄然合并进Bun的主分支。6,755个commit、2,188个文件变更、100万行Rust代码——整个JavaScript运行时从Zig被重写为Rust。这不是一群工程师花了三年慢慢迁移的故事,而是Claude AI在不到两周内完成的一次"代码核爆"。当Code to the Moon频道的这期视频发出后,整个开发者社区炸了锅:AI真能生成百万行可靠代码吗?13,000个unsafe块算什么水平的Rust?Zig做错了什么?Anthropic为什么要买下一个JavaScript运行时然后把它改头换面?这些问题的答案,可能比你想象的更复杂。
| 项目 | 内容 |
|---|---|
| 视频标题 | Bun Was Rewritten in Rust. But the Code... |
| 频道 | Code to the Moon |
| 频道规模 | ~83.7K订阅者 |
| 核心主题 | Bun从Zig到Rust的百万行AI重写及其代码质量争议 |
| 视频风格 | 深度代码分析 + 工程批评 |
| 对应事件 | PR #30412于2026年5月14日合并 |
要理解这场重写,得先回到Bun的起点。2022年,Jarred Sumner选择Zig来构建Bun,这个决定在当时是合理的——Zig没有GC、可以直接做C FFI、对JavaScriptCore引擎的封装极其高效。一个十几人的小团队用Zig迅速做出了比Node.js快3-10倍的运行时,这就是Bun的成名故事。
但Zig的短板在Bun做大后暴露无遗:
[延伸分析] 这里有一个视频没有深入讨论的角度:Anthropic收购Bun后,Bun不再只是一个"更快的Node.js替代品",而是Anthropic构建AI原生开发工具链的一环。Rust对齐意味着Bun未来可能直接集成到Claude Code等产品的底层管线中。
这是整个事件中最令人震惊的部分。PR #30412的分支名就是claude/phase-a-port——直接用Claude命名的分支,毫不掩饰AI的角色。
关键数据点:
怎么做到的?根据Hacker News上的一条高赞评论(该PR下有785条评论、705个upvote),Bun团队准备了一份极其详细的Zig到Rust映射指南文档,这个文档本身就是一项巨大的工程:
"When announcements say that rewrite took 1 week, I wonder how much time went into preparing this file with very detailed instructions on mapping Zig to Rust idioms."
也就是说,AI不是凭空写代码,而是在人类精心构建的"脚手架"指导下进行翻译。这更像是一种AI辅助的机械化翻译,而非创造性的代码生成。
这是视频中最尖锐的批评点,也是社区争议最大的焦点。
Rust最核心的卖点就是内存安全(memory safety),而unsafe关键字可以绕过Rust的借用检查器。在规范的Rust项目中,unsafe块应该被控制在极小范围内,通常是底层FFI接口。但Bun的Rust版本中出现了超过13,000个unsafe块。
这意味着什么?
unsafe块很可能隐藏着数不清的内存安全bug[我的判断] 这里需要区分两个层面:短期来看,13,000个unsafe块确实是一个严重的技术债,但它们并不意外——这是一次AI驱动的机械翻译的必然结果。长期来看,这些unsafe块应该被逐步消除,这才是真正考验Bun团队工程能力的地方。视频的批评是有道理的,但如果理解了这次重写的本质(AI翻译而非人工重写),就能理解为什么一开始会有这么多unsafe。
99.8%的测试通过率听起来很漂亮,但代码审查者kant2002的分析指出:
ByteIota的分析文章也指出,测试通过率不能等同于生产就绪(production-ready)。一个运行时要处理的是数百万开发者各种奇葩的代码,99.8%可能意味着每千次操作就有两次无法预测的行为。
Hacker News上的785条评论基本上分为两大阵营:
支持派认为: - 这是AI辅助开发的一次里程碑,证明了大规模代码翻译的可行性 - Rust生态确实比Zig好得多,从长远看是正确的战略 - 不完美的Rust也比完美的Zig更可持续(因为有更多人能贡献)
反对派认为:
- 13,000个unsafe块是对Rust社区的"侮辱"
- AI生成的代码缺乏深度理解,只能做表面翻译
- 这是Anthropic的一次"技术秀",目的是展示Claude的能力而非真正改进Bun
- "If you're going to write Rust with 13k unsafe blocks, you might as well write C++"——一条高赞评论的犀利总结
Jiacai Liu的博客文章则提供了一个难得的中间视角:"Bun stands where it does today because of Zig. Jarred chose Zig not because it was cool, but because Zig enabled a small team to rapidly prototype a high-performance JS runtime."——承认Zig的历史贡献,同时理解转向Rust的现实必要性。
graph TB
A[Bun的百万行Rust重写] --> B[动机层]
A --> C[执行层]
A --> D[争议层]
A --> E[影响层]
B --> B1["Zig生态局限<br/>招人难/库少"]
B --> B2["Anthropic收购<br/>战略对齐"]
B --> B3["Rust生态优势<br/>15万+crates"]
C --> C1["Claude AI翻译<br/>~100万行代码"]
C --> C2["人类构建映射指南<br/>Zig→Rust idioms"]
C --> C3["6-9天完成<br/>6755 commits"]
D --> D1["13,000 unsafe块<br/>安全形同虚设"]
D --> D2["99.8%测试通过<br/>够不够?"]
D --> D3["AI生成代码<br/>质量如何保证?"]
E --> E1["AI编程的边界<br/>到底在哪"]
E --> E2["JavaScript运行时<br/>格局重塑"]
E --> E3["开源项目的<br/>AI重构范式"]
style A fill:#e74c3c,color:#fff,stroke:#c0392b
style B fill:#3498db,color:#fff,stroke:#2980b9
style C fill:#2ecc71,color:#fff,stroke:#27ae60
style D fill:#f39c12,color:#fff,stroke:#e67e22
style E fill:#9b59b6,color:#fff,stroke:#8e44ad
短期内不必恐慌。Bun 1.3.14(最后一个Zig版本)仍然稳定可用。Rust版本的Bun还需要数月才能达到生产级别。你现在可以:
bun upgrade --canary尝鲜,但不建议在生产环境使用这次事件提供了一个绝佳的案例研究:
这次重写对比了Zig和Rust两种系统语言的实战表现:
Bun的百万行Rust重写不是AI"取代"程序员的证据,而是AI在人类精心指导下完成的一次机械化翻译实验——它证明了AI可以翻译代码,但也证明了翻译不等于理解。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
