Buz:一个采用现代 Zig 的 Bun 分支,支持亚秒级增量构建
Hacker News 摘要原标题:Buz – A fork of Bun using modern Zig, with sub-1s incremental builds
Buz 项目概述
Buz 是一个基于知名 JavaScript 运行时 Bun 的分支项目。开发者 jazzzooo 在 Ziggit 论坛上展示了这一作品。该项目的核心目标是在保持与 Bun 兼容的同时,使用现代 Zig 语言对代码库进行重构和优化。目前项目仍处于早期开发阶段,暂时不建议用于生产环境。
技术特点与改进
• 极速增量构建:通过将整个构建图(包括 JavaScriptCore 的源代码)整合进 build.zig,Buz 实现了不到 1 秒的增量构建速度。这极大地缩短了开发循环,提高了调试效率。
• 现代 Zig 适配:项目已迁移至当前的 Zig 主线版本。为了支持增量重建,开发者对 Zig 编译器进行了微小的补丁处理。
• 清理冗余代码:作者从原有的 Bun 代码库中删除了超过 11,000 行完全废弃的死代码。他指出,Bun 的代码库在快速迭代中积累了严重的技术债,Buz 的目标是建立一个更简洁、更合理的代码架构。
• 修复与现代化:大量代码被重写以适配 Zig 标准库,并在过程中修复了无数潜伏的错误。项目还同步了 Rust 版 Bun 的最新测试用例,力求在功能和稳定性上跟进。
开发策略与 AI 的应用
作者对该项目的开发采取了比较特殊的策略:
• 大量使用 LLM:由于 Bun 的源代码量接近 60 万行且逻辑复杂,作者认为不应让开发者陷入这种混乱中。因此,他选择大量利用 AI 和 LLM 工具来辅助清理和重构代码。
• 暂时不接受人类贡献:在代码库达到作者认为的健康状态之前,他不接受由人类直接编写的代码贡献。他希望先通过 AI 辅助将各子系统重写为地道的 Zig 代码。
• 长期愿景:作者希望在几个月内,将项目打造为一个整洁、易于维护、且能完美替代 Rust 版 Bun 1.4.0 的工具。最终目标是让代码库变得足够友好,不再依赖 AI 即可进行日常维护。
社区反馈与观点
论坛中的其他开发者对该项目表达了关注,同时也提出了一些深入的见解:
• 胶水层论点:有开发者认为,Bun 的核心竞争力其实在于它整合的一系列 C 和 C++ 项目,如 JavaScriptCore、uWebSockets、brotli 等。Zig 或 Rust 在其中主要充当胶水代码的作用。
• 关注重点建议:社区建议 Buz 如果想取得成功,除了改进代码质量外,更应关注系统的稳定性和对 V8 以及 N-API 的兼容性。既然 Bun 的性能已经非常出色,解决兼容性和崩溃问题将是赢得用户的关键。