该版本历时 8 个月开发,包含来自 244 名贡献者的 1183 次提交。以下是核心内容的总结:
1. 核心变革:I/O 接口化 (I/O as an Interface)
这是本版本最重要的变化。Zig 现在要求所有的输入输出操作都通过 Io 实例进行,从而实现了灵活的并发模型:
- Io.Threaded:基于线程的传统模式(目前“Juicy Main”默认使用)。
- Io.Evented:实验性的、基于用户态栈切换的并发模式(类似绿色线程)。
- 新特性:引入了
Future、Group、Batch 等抽象,原生支持操作的取消 (Cancelation) 和超时处理。
2. 语言层面的重大调整
- @type 被替换:废除了通用的
@Type 内置函数,取而代之的是更具体、易读的函数,如 @Int、@Struct、@Enum、@Pointer 等。
- C 翻译迁移:
@cImport 被弃用,C 语言翻译功能移至构建系统 (Build System) 处理,且编译器后端从 libclang 切换到了原生的 arocc。
- 内存安全增强:禁止函数返回局部变量的地址;禁止在 Packed 类型中使用指针。
- 类型解析重构:重写了内部类型解析逻辑,减少了编译器 Bug,并提供了更清晰的“依赖循环 (Dependency Loop)”错误提示。
3. 标准库与工具链改进
- “Juicy Main”:
main 函数现在可以接收一个 std.process.Init 参数,预初始化了分配器 (GPA)、I/O 实例、命令行参数和环境变量,极大简化了样板代码。
- 环境变量非全局化:为了线程安全,环境变量不再作为全局状态存在,必须通过
Init 获取。
- 数学与压缩:新增了 Deflate 压缩实现,性能接近 zlib;增强了加密库(新增 AES-GCM-SIV 和 Ascon 等)。
- Windows 深度优化:完成了向
NtDll 的全面迁移,绕过了 kernel32 和 ws2_32.dll,提高了性能和稳健性。
4. 编译器与构建系统
- 增量编译 (Incremental Compilation):显著提升了增量编译的速度和稳定性,LLVM 后端现在也支持增量编译。
- 新 ELF 链接器:作为增量编译下的默认 ELF 链接器,性能大幅提升(部分场景比旧版快 66%)。
- 包管理优化:支持通过
--fork 标志本地覆盖依赖包;依赖项现在下载到项目本地的 zig-pkg 目录,便于调试和查看源码。
- Fuzzer 升级:模糊测试工具
Smith 进行了重构,支持多核并行测试和“无限模式”。
5. 目标支持与路线图
- 平台变动:增加了对 LoongArch32 等新架构的支持,但移除了 Solaris、AIX 和 z/OS 等闭源系统的支持。
- Tier 系统:明确了四级目标支持体系,x86_64-linux 仍是唯一的 Tier 1 目标。
- 未来计划:0.17.0 将是一个短周期版本,重点是升级到 LLVM 22 和完善构建系统;长远目标包括 1.0 版本的语言稳定化和完全脱离对 LLD 链接器的依赖。
总结: 0.16.0 是 Zig 迈向稳健生产环境的重要里程碑,通过 I/O 接口化和类型系统重构,语言的工程化能力和编译器性能得到了质的提升。
加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来:
- 供稿,分享自己使用 Zig 的心得
- 改进 ZigCC 组织下的开源项目
- 加入微信群、Telegram 群组
该版本历时 8 个月开发,包含来自 244 名贡献者的 1183 次提交。以下是核心内容的总结:
1. 核心变革:I/O 接口化 (I/O as an Interface)
这是本版本最重要的变化。Zig 现在要求所有的输入输出操作都通过
Io实例进行,从而实现了灵活的并发模型:Future、Group、Batch等抽象,原生支持操作的取消 (Cancelation) 和超时处理。2. 语言层面的重大调整
@Type内置函数,取而代之的是更具体、易读的函数,如@Int、@Struct、@Enum、@Pointer等。@cImport被弃用,C 语言翻译功能移至构建系统 (Build System) 处理,且编译器后端从 libclang 切换到了原生的arocc。3. 标准库与工具链改进
main函数现在可以接收一个std.process.Init参数,预初始化了分配器 (GPA)、I/O 实例、命令行参数和环境变量,极大简化了样板代码。Init获取。NtDll的全面迁移,绕过了kernel32和ws2_32.dll,提高了性能和稳健性。4. 编译器与构建系统
--fork标志本地覆盖依赖包;依赖项现在下载到项目本地的zig-pkg目录,便于调试和查看源码。Smith进行了重构,支持多核并行测试和“无限模式”。5. 目标支持与路线图
总结: 0.16.0 是 Zig 迈向稳健生产环境的重要里程碑,通过 I/O 接口化和类型系统重构,语言的工程化能力和编译器性能得到了质的提升。
加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来: