2026年5月14日,GitHub历史上最具争议的Pull Request被合并了。PR #30412,标题简洁得近乎傲慢——"Rewrite Bun in Rust"。6,755个commits,2,188个文件变更,100万行新增代码,仅4,024行删除。整个Bun JavaScript运行时从Zig语言被AI翻译成了Rust。只用了6天。这不仅仅是一次语言迁移,它是AI辅助编程的"登月时刻"——或者用批评者的话说,是"软件工程的切尔诺贝利"。今天我们要深度拆解这个视频和它背后的技术真相。
| 项目 | 内容 |
|---|---|
| 视频标题 | AI Just Rewrote 1 Million Lines of Code Overnight — The Bun Story |
| 频道 | Tech Analysis |
| 时长 | 约20分钟 |
| 发布时间 | 2026年5月 |
| 核心主题 | Bun运行时从Zig到Rust的AI辅助百万行代码重写事件 |
要理解这场重写的震撼程度,得先回到2022年。那时Jarred Sumner选择Zig构建Bun,并非心血来潮。Zig是一门极具个性的系统级语言:没有隐式控制流、没有隐藏的内存分配、直接C FFI(外部函数接口)、comptime编译期计算。这些特性让Bun能够以极小的团队快速构建一个高性能JavaScript运行时,直接包裹JavaScriptCore(JSC)引擎。
Zig的核心优势在于:它让你像写C一样写底层代码,但更安全、更易读。对于一个需要深度控制内存布局和调用C API的JS运行时来说,Zig几乎是完美的选择。Bun用Zig做到了一件事——在几乎所有benchmark中碾压Node.js。安装速度快3倍,测试运行快10倍,启动时间几乎瞬间。
但Zig有一个致命问题:它还在0.x版本。语言本身频繁出现breaking changes,工具链不稳定,生态远不如Rust成熟。这为后来的重写埋下了伏笔。
延伸分析:Zig的"unstable"状态意味着每次更新都可能破坏你的代码。对于个人项目可以忍,但对于一个被数百万开发者依赖的运行时来说,这是不可接受的风险。Jarred Sumner在多个场合表达过对Zig路线图的担忧。
2025年12月,Anthropic收购了Bun。表面上看,这是一次AI公司对开发工具的战略布局。但内部逻辑更深层:Anthropic需要Claude有一个原生的JavaScript/TypeScript执行环境。
收购之后,Bun团队获得了Anthropic内部强大的AI agent基础设施。这也意味着,他们有了一个前所未有的工具——可以大规模自动化代码翻译的AI系统。
这里有一个很多人忽略的细节:Bun在Zig版本中长期存在慢性内存泄漏问题。Zig的手动内存管理虽然给了极致的控制力,但也让内存泄漏更容易发生且更难追踪。对于一个被Anthropic用于运行AI生成代码的运行时来说,内存泄漏是致命的。这成为了推动Rust重写的核心技术动机。
2026年5月8日,Jarred Sumner和团队开始了一项史无前例的工程实验:用Claude AI将Bun的全部Zig代码库翻译成Rust。
关键数据:
- 翻译规模:960,000行Zig代码
- 完成时间:6天
- 测试通过率:99.8%
- PR统计:6,755 commits,2,188 files changed,1,009,257 lines added
- 分支名:claude/phase-a-port
但"6天"这个数字有误导性。Hacker News上的高赞评论揭示了一个关键细节:在AI开始翻译之前,团队花了大量时间准备一份极其详尽的映射文档。这份文档详细规定了如何将Zig的每个idiom翻译成Rust的等价写法——从内存分配模式到错误处理,从类型系统映射到并发原语。
这就像给AI一本"Zig→Rust词典"。AI不是凭空翻译,而是在人类工程师精心搭建的框架内工作。
核心判断:这不是"Claude,帮我把Bun重写成Rust"这种简单的prompt。这是一位深谙两门语言的系统工程师,花了数周准备翻译规则,然后让AI按照规则批量执行。人的智慧在规则设计,AI的力量在执行速度。
这是整个事件中最具争议的技术点。在合并的Rust代码中,存在约13,000个unsafe块。
Rust的核心卖点就是内存安全——编译器在编译时保证没有内存错误。但unsafe关键字会告诉编译器:"这部分代码我来手动保证安全,你不用检查。"在Rust社区,每个unsafe块都需要配一段安全注释(safety comment),解释为什么这段代码是安全的。
13,000个unsafe块意味着什么?这意味着Rust的安全保证在这百万行代码中几乎形同虚设。 AI翻译器做了一件最简单的事:遇到Zig的不安全操作,就用Rust的unsafe包裹。它绕过了Rust安全系统的核心——借用检查器(borrow checker)。
Hacker News上有人尖锐地指出:
"如果Rust代码里有13,000个unsafe块,那你本质上写的就不是Rust——你写的是用Rust语法装饰的C代码。"
这是一个深刻的讽刺:Bun从Zig迁移到Rust,名义上是为了更好的安全性,但AI翻译产生的大量unsafe块实际上让安全性不升反降。
dev.to上的开发者J.Torchia进行了独立基准测试,结论颇具启发性:
JavaScript运行时的性能主要取决于: 1. JavaScriptCore(JSC)引擎本身 2. 与JSC的绑定效率 3. 异步I/O的实现质量
而不是运行时本身用什么语言写的。
实际测试显示,Rust版本的Bun在某些场景下确实有小幅提升(二进制文件小了3-8 MB),但整体性能与Zig版本基本持平。这不是意外——因为性能瓶颈从来不在"运行时用什么语言写",而在JS引擎本身。
用一个比喻:你给汽车换了一个不同材质的底盘,但发动机没变。车重减轻了一点,但最高速度差不多。
这个PR在Hacker News上获得了708个upvote和789条评论。社区的反应经历了几个阶段:
第一阶段:惊叹 - "We got Bun in Rust before GTA 6"(我们比GTA 6先等到了Bun in Rust)成为流行meme - 对AI编码能力的前所未有的展示感到震撼
第二阶段:质疑 - 13,000个unsafe块引发安全担忧 - 99.8%的测试通过率意味着0.2%的失败——对于一个运行时来说,0.2%的失败率可能导致大量edge case bug - 没有经过充分的代码审查(百万行代码,谁能在合理时间内审查完?)
第三阶段:深层反思 - 这是否开创了一个危险的先例?如果AI写的代码可以不经充分审查就合并到生产级基础设施中... - Zig社区的震动:Bun是Zig生态中最重要的项目之一,它的离开对Zig是巨大打击 - 对软件工程"质量"定义的重新思考:如果测试通过,代码质量就够好吗?
Jiacai Liu在他的博客中写了一段被广泛引用的话:
"Bun今天站在这里,是因为Zig。Jarred当初选择Zig不是因为它'酷',而是因为Zig让一个小团队能够快速构建一个高性能的JS运行时。"
这段话点出了一个被忽略的事实:Zig完成了它的历史使命。 没有Zig的简洁和直接,就不可能有Bun的快速崛起。Rust现在是更好的长期选择,但不是因为Zig"不好"——而是因为Rust的生态、工具链和人才储备远超Zig。
这就像创业公司用Ruby on Rails快速验证产品,然后成功后用Java重写。不是说Ruby不好,而是不同阶段需要不同的工具。
mindmap
root((Bun Zig→Rust重写))
背景与动机
Zig 0.x版本不稳定
Anthropic收购(2025.12)
慢性内存泄漏
生态与人才考量
执行过程
6天翻译96万行代码
Claude AI agent执行
详尽的Zig→Rust映射文档
PR #30412合并(2026.5.14)
技术争议
13,000个unsafe块
99.8%测试通过率
绕过借用检查器
代码审查可行性
性能影响
JSC引擎不变
二进制减小3-8MB
整体性能基本持平
修复内存泄漏
行业影响
AI辅助编码的里程碑
软件质量定义的挑战
Zig生态受打击
生产级AI代码先例
1. AI辅助大规模代码迁移已经可行,但有前提条件
Bun的重写成功不是因为Claude很聪明,而是因为: - 有极其详尽的翻译规则文档 - 有完整的测试套件作为安全网 - 有深谙两门语言的工程师把关
如果你要做类似的项目级迁移,先投资在测试和规则文档上,而不是直接让AI开干。
2. "测试通过"不等于"代码安全"
99.8%的测试通过率听起来很棒,但13,000个unsafe块告诉我们:测试只能验证你想到的场景,不能保证你没遗漏的场景。对于基础设施级代码(运行时、编译器、数据库),测试覆盖率之外的质量保证至关重要——形式化验证、fuzzing、静态分析缺一不可。
3. 选语言不只是选语法
Zig和Rust的性能差距微乎其微,但生态差距巨大。当你选择一门语言时,你选择的不仅是语法和性能,更是人才市场、第三方库、工具链成熟度和长期维护成本。Bun选择Rust的真正原因不是"Rust更快",而是"Rust的生态让长期维护更容易"。
4. AI编码的真实能力边界
百万行代码的翻译是AI目前最擅长的任务类型之一——规则明确、模式重复、有清晰的对错标准。但系统架构设计、性能调优、安全审计——这些需要深度理解的领域,AI还远远不够。别被这个案例冲昏头脑。
Bun的Zig到Rust重写不是AI取代程序员的证明,而是一个顶级工程师利用AI将数月的机械翻译压缩到6天的范例——但13,000个unsafe块提醒我们,速度永远不能替代质量。
本文由「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 等场景全覆盖。
