Zig 0.10.0 已正式发布。Zig 是一种通用的编程语言和工具链,用于维护健壮、最优和可重用的软件。
Zig 0.10.0 是重要更新版本,其开发周期长达 10 个月,共有 272 名贡献者提交了 4737 个 commit。当然最大的亮点莫过于自托管编译器的首次亮相。
自托管编译器
此次更新的重大亮点就是自托管编译器的首次亮相。
目前 Zig 已默认启用自托管编译器,同时也为尚未准备好升级的用户保留了 Bootstrap 编译器,只需添加-fstage1
flag 即可使用。
官方介绍称,自托管编译器的实现在性能和内存使用方面优于旧版本。以下是编译器自身构建的两项数据(在 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz 上测试):
- Wall Clock Time: 43 seconds to 40 seconds (7% faster)
- Peak RSS: 9.6 GiB to 2.8 GiB (3.5x less memory used)
根据 Zig 维护者的介绍,Zig 自托管编译器有大概 20 万行代码,包含 LLVM、WASM、C、x86_64、arm 和 aarch64 后端。编译器代码库采用 Zig 而不是 C++ 编写,使用的内存显着减少,优化了性能。
尽管与 Bootstrap 编译器不同,新的编译器实现的速度略快,而且由于与链接器紧密结合,它能够进行增量编译。不过更大的编译速度优势将来自于不使用 LLVM 的代码生成后端。
据称这个版本的绝大部分开发工作都花在了这个新的编译器实现上。因此,语言方面的变化非常少。但这个新的代码库为主要的增强功能打下了基础,主要涉及到加快编辑/测试/调试周期。现在,自托管编译器不会再耗费如此多的精力,Zig 开发团队将会积极实现路线图上的目标。
WebAssembly
在这个版本的开发周期中,团队将大量时间都花在了可见和不可见的改进上,通过重构来提升可读性、可维护性以及后端及其生成代码的性能。在 Zig 0.10.0 中,团队称离让 WebAssembly 后端成为默认调试模式更近了一步。
延伸阅读
- 实现自托管后,Zig 的下一步是什么?
- Zig 重要里程碑:已初步实现自举