Zig 0.17.0 是一个主要版本,重点是构建系统现代化和语言稳定化。
- 构建系统现在将配置与执行分离,引入构建服务器协议,将包管理命令移出编译器,改进缓存,并支持更安全的配置依赖跟踪。
- 得益于 ELF 链接器的重要改进,`zig build -fincremental --watch` 增量编译现在已适用于大多数 x86_64-linux 项目。
- COFF、SPIR-V、WebAssembly 和实验性 LoongArch 后端及链接器获得了大量功能改进;新增了 `zig objdump` 和 `zig fmt --complexity` 工具。
- 语言变化包括重新设计 `@bitCast`,使其不再依赖字节序;新增 `@backingInt`、`@fromBackingInt`、`@SpirvType` 和 `@divCeil` 内置函数;并正式规定了一套经过模糊测试的语法。
- 破坏性移除包括 `@cImport`、数组乘法语法、`void{}`、`errdefer |err|`、`i0` 以及若干标准库 API。
- 目标平台扩展至 SPARC64、LoongArch、游戏主机和众多嵌入式平台,同时改进了 CPU 检测和崩溃堆栈跟踪。
- 工具链更新至 LLVM/Clang 22.1.8、musl 1.2.5、glibc 2.44、NetBSD 11.0 和 OpenBSD 7.9。
该版本仍存在已知错误和回归问题; notably, LLVM 循环向量化仍暂时禁用,构建服务器协议的变化也影响了 ZLS 的兼容性。