一个开源项目删掉1234个文件,通常不是什么新闻。但Bun这次不一样——删的是64万行Zig代码,而且删完之后项目反而能正常跑。
这事得从Bun的底层重构说起。这个用JavaScript运行时挑战Node.js的项目,去年完成了从Zig到Rust的大规模迁移。迁移期间,旧代码被保留下来当"活文档",方便对照参考。现在迁移彻底完成,这些文件完成了历史使命。
打开网易新闻 查看精彩图片
提交者列了一份保留清单:只有56个Zig文件暂时留下。它们被三个代码生成工具硬依赖着——bake-codegen.ts要读DevServer.zig里的枚举定义,bindgen.ts要求每个.bind.ts文件必须有同名的.zig兄弟文件,generate-js2native.ts则按路径解析$zig()调用。除此之外,全部清理。
打开网易新闻 查看精彩图片
测试系统也同步调整。原本指向parser.zig的超大文件压缩测试,现在改指向parser.rs;内部lint基线文件ban-limits.json重新生成,所有Zig相关计数自然下降。提交者本地验证了bun debug构建通过、cargo check全绿、受影响测试全过。
代码审查机器人最初给这个PR打了"AI slop"标签——毕竟一次性删上千文件太像生成式工具的批量操作。但人工复核后确认:删除是纯移除,测试修改是直球替换,没有隐藏风险。真正的考验是CI能不能绿,以及那56个被手动保留下来的文件有没有漏网之鱼。
打开网易新闻 查看精彩图片
这件事的有趣之处在于开源工程的"债务管理"。很多项目迁移语言后,旧代码像幽灵一样赖在仓库里,没人敢动。Bun选择明确区分"参考期"和"清理期",用工具依赖清单代替人工记忆,把不确定性变成了可检查的约束。64万行代码的葬礼,办得干净利落。
热门跟贴