21CTO导读:在 Bun 借助 AI 全面拥抱 Rust 之后,Zig 社区选择接手 Bun 弃用的 Zig 代码,推出了新项目 Buz。通过迁移至现代 Zig 工具链与构建系统,Buz 将增量编译压至 1 秒以内,并规定“仅接收 AI 辅助代码”以快速清理技术债。
Bun 的 Zig 时代本来已经画上句号。
为了将 53 万多行 Zig 代码迁移至 Rust,Jarred Sumner 调度 64 个 Claude 实例连续运行 11 天。重写分支于 5 月合入主线,并在 7 月发布了完整复盘。正当大家等待 Bun v1.4 带着全新 Rust 架构登场时,Zig 社区却从弃用的代码库中拉出了一条全新的分支——Buz。
项目名故意将 Bun 结尾的 n 替换为代表 Zig 的 Z。它的起点是 Bun 切换 Rust 前的最后一个 Zig 提交,目标非常明确:基于现代 Zig 语法,打造一个可无缝替代 Bun 的运行时。
5 月初,Jarred 曾声称 Rust 重写只是个人实验;然而测试通过率迅速上升,重写分支迅速在 5 月 14 日进入主线。7 月公布的数据显示,这场大规模迁移累计产生 6502 个提交,新增代码逾 100 万行。
但截至目前,官方最新稳定版仍停留在 5 月发布的 Bun v1.3.14(即最后一个 Zig 稳定版)。Rust 版本虽已进入主线与 canary 分支,v1.4 却尚未正式面世。
Buz 恰好卡在这个空档期。它并未重复造轮子,而是接管了 Bun 遗留的 Zig 代码库继续迭代。
同样这么做的还有更早出现的 Cruller,不过 Cruller 主动剥离了包管理器、打包器与测试工具,仅精简保留生产环境的 JS 运行能力。而 Buz 更加激进:它计划保留 Bun 的完整生态,实现 1:1 的直接替换。
对于原版 Bun 的开发者而言,编译缓慢一直是核心痛点。曾有工程师统计,自己每周要浪费 181 分钟等待 Zig 编译。
Buz 作者将整个构建图重新迁移至 build.zig,并将 JavaScriptCore 与 ICU 等底层 C/C++ 依赖统一纳入该构建流程。同时跟进 Zig 最新主分支,并对增量构建实施了补丁优化。
现在,执行如下增量调试命令:
./zig build --watch -fincremental增量构建耗时被成功压缩至 1 秒以内。
mold 链接阶段;若 Zig 原生链接器补齐关键特性,增量构建时间有望进一步降至 300 毫秒以内。这种提速彻底改变了大型底层项目的开发体验。此外,Buz 还完成了以下重构:
清理死代码:成功移除超 1.1 万行无用代码。
同步测试集:引入 Rust 版 Bun 的新测试用例,追平新特性与漏洞修复。
拥抱标准库:逐步用 Zig 标准库替代原有的自建轮子。
持续上游同步:保持对文件系统、哈希计算及 CLI 模块的高频更新。
上线仅一周,该项目在 GitHub 已收获约 190 个 Star。代码统计显示 Zig 占比约 60%,C++ 占 26%。这也揭示了一个事实:无论外层采用 Zig 还是 Rust,JavaScriptCore 等 C/C++ 核心组件依然占据举足轻重的地位。
此前 Bun 使用 Claude 将代码从 Zig 迁移到 Rust 时,曾引发 Zig 社区对产生“AI 垃圾代码(AI slop)”的剧烈批判。然而接手旧代码的 Buz,同样选择了依赖大语言模型(LLM)。
仓库中甚至明确标注了一条醒目的贡献指南:所有代码提交必须由 LLM 辅助完成。只有当测试覆盖率与代码健康度达到标准后,该限制才会解除。
作者的逻辑十分现实:依靠人工去梳理近 60 万行历史遗留代码,极易摧毁维护者的精力。因此,项目策略是用 AI 承担批量清理工作,人类开发者则负责把控方向、重构架构并审核正确性。所有提交还必须通过 Sol Max 或 Fable Max 的深度审查。
这构成了某种戏剧性的互讽:社区尝试用 AI 来清理一份曾被指责“AI 味太重”的代码库。
对此,Bun 创始人 Jarred 也在 X(原 Twitter)作出回应。他指出 Bun 主线近期也清理了约 3.9 万行死代码,且每天都有 Claude 定时巡检死代码。他强调,Bun 需要同时兼顾多平台(Linux, Windows, macOS, FreeBSD, Android)与多架构(x64, ARM64),大量平台特化代码只会在特定编译目标下生效。
这表明死代码总量只能反映系统复杂度,无法直接作为衡量工程质量的标准。双方真正较量的,是在重构后能否持续守住功能完整性、跨平台兼容性以及安全更新。
尽管目标宏大,但 Buz 距离生产级“无缝替代”尚有显著差距。仓库 README 已明确列出当前风险:
平台限制:目前仅聚焦于 x86_64-linux-gnu 的本地编译与测试。
测试未通过:上游 Bun 的完整测试套件中仍有大量用例失败。
安全隐患:内置的 JavaScriptCore 版本滞后,缺乏最新的安全补丁,且存在已知漏洞。
无正式发布:未提供任何 Stable Release,本质上仍是维护者的实验场。
Zig 版 Bun 确实重回视野,但目前仍停留在实验室阶段。
Buz 未来面临的最大挑战并非清理代码,而是如何跟上 Bun 主线的演进节奏。每当 Bun 团队新增 Node.js API、修复跨平台 Bug 或升级 JavaScriptCore 时,Buz 都需要投入精力进行同步。对于一个社区驱动的项目而言,这场长期拉锯战远比完成首次构建更为艰难。
然而这个实验依然具备极高价值:Bun 从 Zig 转向 Rust,验证了 AI 压缩大型工程跨语言迁移周期的可行性;而 Buz 则在探索另一个命题——在不更换语言的前提下,依托现代 Zig、重构构建工具链并借助 AI 压低技术债,能否打造出一个更易维护的底层系统?
作者:聆听音乐的鱼
本篇文章为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。