文章摘要
热门JavaScript项目Bun借助AI仅11天、花费约16.5万美元就将项目从Zig语言移植到Rust语言,新版在各平台测试全通过。Sumner称迁移是因Bun用户增多后安全漏洞暴露,且Rust自动化内存管理更优。但Zig创始人Andrew Kelley批评Sumner编程实践不规范,质疑AI生成代码质量,认为此举违背软件工程标准。

一款热门的JavaScript运行时与工具链项目Bun,在借助AI完成语言迁移后,凭借更快的执行速度获得赞誉,但同时也因背后的编码实践遭到尖锐批评。

Bun的创建者Jarred Sumner对外宣布,他通过并行部署的Claude智能体,仅用11天就将整个项目从Zig编程语言移植到了Rust语言。按照API服务的定价计算,这次迁移的总成本约为16.5万美元。这一成果证明,此前被认为规模过大、难以推进的大型软件重构,如今借助AI技术已经具备了可行性。

Sumner解释,这次迁移势在必行,因为随着Bun用户群体扩大,项目暴露的安全漏洞越来越多,其中就包括和近期Claude源代码泄露事件相关的漏洞。

不过Zig语言的创建者Andrew Kelley并不认同这种说法,他拒绝将Bun的问题归咎于Zig语言本身,反而将矛头指向Sumner不规范的编程实践。Kelley在公开博文中提到,对他而言,这次转向Rust并非源于两种语言的功能差异,也和AI的使用无关,本质上是两个项目的价值观体系截然不同。

Bun本身是一套集成了运行时、包管理器、打包工具和测试运行器的JavaScript一站式解决方案,不少开发者青睐它是因为它能和Node.js良好兼容且运行速度出色。为了提升性能,Sumner选择了苹果的WebKit JavaScriptCore引擎,而非谷歌主流的V8引擎,同时选用了当时崭露头角的Zig语言,看中的是其底层性能和精细的控制能力。

2025年12月,Anthropic收购了Bun项目,并且基于Bun搭建了自身的核心状态机。也就是在这个阶段,Sumner开始大量在项目维护中使用AI工具,收购完成时,一个名为RoboBun的Claude Bot已经在代码库中承担了大量工作,它是合并PR数量最多的贡献者,负责修复漏洞和解决测试失败问题。

随着用户规模增长,Bun的代码漏洞逐渐暴露。有用户在软件多个位置发现了问题,比如此前Anthropic的51.2万行代码泄露事件,经行业安全团队调查,根源其实是Bun的Bundler模块存在漏洞,即使被明确禁止,该模块仍会在构建过程中生成源映射文件。Sumner在迁移博文中澄清,这些漏洞并非Zig语言的问题,而是Bun的架构混合了垃圾回收和应用程序驱动的内存管理,Zig本身并非为这类场景设计,而Rust在自动化内存管理上的表现更出色。

如果手动将50万行Zig代码重写为另一种语言,对于小型工程师团队来说需要整整一年的时间,而且在此期间所有的bug修复、安全更新和功能开发都将暂停。正是出于这个原因,Sumner选择了Claude工具,他启动了约50个动态Claude Code工作流,峰值时每分钟可生成约1300行代码,最终产出了超过100万行的Rust代码,整个过程耗时11天,成本约16.5万美元,其中Claude Fable承担了大部分繁重的转换工作。

基于Rust的新版Bun项目,接受了项目自带的超过100万条断言的测试套件的全面检验。据Sumner介绍,新版项目在所有受支持平台上都实现了100%通过测试,没有跳过或删除任何测试项。HashiCorp的联合创始人Mitchell Hashimoto对此大为震撼,他在社交平台上指出,按照常规的薪资水平,人类工程师绝对不可能在11天内完成Claude所达成的这个里程碑。

不过这场快速迁移也引发了关于软件开发核心原则的讨论:Bun的快速开发速度是否违背了优质软件工程的标准?

Kelley对此并不买账,他在题为《我对Bun用Rust重写的看法》的博文中,详细表达了自己的疑虑。他提到,早在Anthropic收购Bun之前,团队就对代码库中的编程实践感到越来越震惊。作为使用Zig语言开发的规模最大、知名度最高的项目之一,Bun在被收购前还是Zig软件基金会的定期捐助者。

在Kelley看来,Bun项目为了快速发布新功能采取了激进的策略,导致大量漏洞堆积、错误处理代码粗糙,积累了沉重的技术债务。他甚至打趣道:“早在获得大语言模型访问权限之前,Sumner就已经在写出一团糟糕的代码了。”Kelley推测,Sumner可能承受了达成商业目标的压力,而非优先考虑技术质量,这种压力在被Anthropic收购后愈发加剧。

事实上,在Kelley眼中,Bun的代码库已经变得如此让人不信任,以至于Bun和Zig分道扬镳反而是一件好事。他写道:“这个曾被公众视为Zig编程语言典范的项目,实际上已经不再是‘如何不编写Zig代码’的典型案例,反而成了反面教材。”

Bun团队还曾尝试将部分AI辅助开发的成果回馈给Zig项目,但最终未能成功。据行业媒体今年5月的报道,在重写Bun之前,该团队维护了一个Zig分支,据称其调试编译速度提升了四倍,但Zig项目以“不接受基于AI的贡献”为政策理由,拒绝了Bun的这些改动。

Kelley还指出,Zig社区此前已经涌入了大量由大语言模型生成的提交代码,其中大部分质量堪忧,缺乏工程监督的AI生成代码未来必然会引发无数问题。他进一步质疑:“支持发布这100万行未经审核代码的论点是,测试套件足够完善,能够发现所有问题。但连Zig代码中的Bug都无法完全发现的测试套件,又怎么能发现100万行未经审核的粗制滥造的Rust代码中的Bug呢?”

以上内容不代表本平台立场,仅供读者参考