文章摘要
Zig语言团队多年来一直致力于提升编译速度,通过开发自有代码生成后端、链接器以及逐步实现增量编译等功能。最新版本Zig 0.15.1已展现出显著成效,例如Ghostty项目的构建脚本编译时间从7秒大幅缩短至1.7秒。
文章总结
标题:Zig构建速度正在显著提升
编译速度一直是Zig语言的核心优化目标。经过多年努力,Zig团队通过自主研发代码生成后端、构建链接器、推进增量编译等关键技术突破,在0.15.1版本中取得了显著成效。以下是Ghostty项目的实测数据对比:
- 构建脚本编译
- 0.14版本:7.167秒
- 0.15版本:1.702秒 (首次源码构建时直接影响可用二进制生成速度)
- 完整构建Ghostty
- 0.14版本:41秒
- 0.15版本:32秒 (注:当前仍主要依赖LLVM,预计未来采用自主x86_64后端后有望降至25秒)
- 增量构建(终端模拟核心代码修改后)
- 0.14版本:19秒
- 0.15版本:16秒 (未来脱离LLVM后预计可降至12秒)
- 核心库libghostty-vt增量构建
- 0.14版本:2.884秒
- 0.15版本:0.975秒 (已完全使用自主后端,开发者工作流效率显著提升)
尽管增量编译功能尚未完全实现,且部分功能仍依赖LLVM,但当前版本已在所有场景实现速度提升。随着自主后端稳定性的持续改进(x86_64已支持调试构建,aarch64进展顺利),以及增量编译的最终实现,未来构建速度有望达到毫秒级响应。
这些实质性改进印证了Zig团队在编译效率方面的承诺,预计未来几年构建速度还将持续突破。对于Ghostty这类重视开发效率的项目而言,采用Zig已展现出显著优势。
评论总结
以下是评论内容的总结:
- 关于LLVM的利弊 支持方观点认为LLVM在代码生成质量上难以超越:
- "when it comes to emitting great assembly, it is almost unbeatable"(在生成优质汇编代码方面几乎无可匹敌) 反对方指出LLVM存在局限性:
- "you lose out on the ability to tune the final optimization passes"(失去了调整最终优化阶段的能力)
- "Go seems to have made the choice long ago to eschew outsourcing of codegen and linking and done well for it"(Go语言早就不使用外部代码生成和链接,效果很好)
- 关于编译器速度
- "The gold standard for compiler speed so far is TCC"(目前编译器速度的黄金标准是TCC)
- "it is so far unbeaten by a large margin"(它目前以很大优势领先)
- 关于Zig构建系统 担忧:
- "Zig's reliance on Turing complete build scripts will make building (and caching) such code difficult"(依赖图灵完备的构建脚本会使构建和缓存变得困难) 肯定:
- "I've really appreciated the incremental builds with zig"(非常欣赏Zig的增量构建)
- "it compiles at nearly Go speeds"(编译速度接近Go语言)
- 关于编译器选择
- "I think we'll see cranelift take off in Rust quite soon"(认为cranelift将在Rust中很快兴起)
- "for SQLite I have to use llvm"(对于SQLite不得不使用LLVM)
总结呈现了编译器技术选择、性能比较和构建系统设计等方面的不同观点,保持了正反意见的平衡。