17611538698
webmaster@21cto.com

Zig 0.17.0 发布,亚秒级性能,新的构建系统与架构

编程语言 0 11 51分钟前
图片

21CTO 导读:经历了数月的打磨、修改和迭代,Zig 发布了新的 0.17版本。

系统编程语言和工具链 Zig 正式向公众发布0.17.0 版本。

该版本历经 5 个多月的密集修改与迭代,汇聚了全世界 206 位贡献者,总共有 925 次代码提交,在作者极克制与完美主义的情节与规约下所诞生。其重点包括构建系统重组、Build Server Protocol 和 ELF 链接器的改进。

新版区分配置与执行构建的进程,并重做缓存机制;对复杂项目而言,这类基础设施变化可能比一个语法功能更显著。

Build Server Protocol 为编辑器与构建工具交流提供统一接口。编辑器需要理解项目目标、诊断与构建状态,而不只是给文件着色。协议能减少各自推测构建结构的工作,实际体验仍取决于客户端是否完整支持。

项目小组表示,ELF 链接器的完善使其预期增量编译可在 x86_64-linux 上普遍工作。这里有明确的平台条件,也有项目的预期口径。

主要的技术进步

iZg v0.17.0的发布标志着该语言向稳定的 1.0 版本迈进过程中最关键的结构性飞跃之一。与其说是外观上的改进,不如说是编译器内部的解耦,从而为工具、增量编译和内存效率奠定了坚实的基础。

图片


总结主要的技术进步:

  • 流程拆分(构建与配置):构建系统摒弃了其单体式执行方式。配置流程现在被清晰地拆分为两阶段架构:一个独立的阶段configurer用于评估build.zig并生成依赖关系有向无环图 (DAG),另一个优化的maker阶段则用于执行构建步骤。配合新的二进制缓存格式,磁盘占用空间减少了约 25%,同时缓存命中率提升了 5% 至 10%。
  • 构建服务器协议(--listen=-): Zig 现在提供专为编辑器和外部工具设计的一流流式接口。然而,这一重大变更暂时中断了 Zig 语言服务器 (ZLS) 等集成,需要开发人员主动适应新的进程间通信 (IPC) 原语。
  • 自托管增量链接器:自托管 ELF 链接器现在支持静态库和共享库、全局偏移表 (GOT) 生成、复制重定位、符号版本控制和 DWARF 调试元数据。现在x86_64-linux,-fincremental --watch它真正实现了开箱即用。
  • SafeAllocator 性能:替换std.heap.DebugAllocator为线程安全SafeAllocator型,峰值测试驻留集大小 (RSS) 减少50.3%(从 2.24 GB 减少到 1.11 GB),测试实际运行时间减少24.7%。
  • 打破语言语义:@bitCast已重新定义,使其严格操作数组和向量类型的逻辑位表示(与字节序无关)。虽然结构更简洁,但社区成员对某些类型转换语义变化会在没有编译时错误的情况下静默执行表示担忧。此外,@intFromEnum`/`@enumFromInt已被替换为@backingInt`/` @fromBackingInt,并且@splat数组乘法(**`)已被替换。


何为 Zig

Zig 编程语言的发明者兼终身仁慈独裁者是 Andrew Kelley。 

Zig 是一种通用的系统级编程语言,其目标是达到与 C 语言相同的性能,但正如 Kelley 所说,它“更少出现致命错误”。

Kelly解释了他为何选择创建 Zig。尽管已经存在 C、C++、Rust 和 Go 等其他语言。他说最初的目标是开发一个数字音频工作站。他尝试过 Go,但发现它与 C 库的互操作性很差,而且垃圾回收机制会导致音频延迟。他尝试过 C++,或者使用 C++ 编译器编写 C 风格的代码,但发现即使是小错误也会导致内存损坏等 bug,需要花费数周时间才能修复。他还尝试过 Rust,但“编写符合 Rust 规则的代码非常困难”,并且花了一个月的时间才让字体渲染正常工作。

于是Keely选择创造一种新的编程语言。他说,Zig“在保留C语言所有强大功能的同时,还改进了C语言的缺陷和不足。”

在最新的 RedMonk 编程语言排名中,Zig位列第 82 位,但深受用户喜爱;去年 Stack Overflow 的调查显示,Zig 是第四大最受推崇的语言,这里的“受推崇”指的是那些希望继续使用 Zig 的开发者。

Zig 项目以其不依赖人工智能的政策而闻名,该政策已明确写入其行为准则。

升级的意义

Zig 历经 11 年又半载,终于又发布了 0.17 版本。

“当我们发布 1.0 版本时,那将是一个真正倾注了全部心血、毫不妥协的杰作,”Keely说道。

他表示正式版将保证向后兼容性,而在预发布版本中,团队可以不受此限制地继续改进语言。而他的目标是打造一种能够服务未来 50 年的语言。

伴随0.17的发布,意味着Zig 1.0 的发布周期也将不远。

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信