Zig 0.16.0 版本已经发布
Zig 0.16.0 发布了,这是 8 个月开发工作的成果,共有 244 名贡献者提交了 1183 项变更。
最值得关注的新特性:
-
全新的 I/O 接口 (
std.Io):这是本次更新的核心。所有输入输出操作现在都需要通过std.Io实例进行,引入了Future、Group等任务并发原语,并统一支持任务取消 (Cancellation)。 -
语言重大变化:
- 移除
@Type内建函数,替换为@Int、@Struct、@Enum等 8 个更具体的内建函数。 @cImport被标记为弃用,C 翻译功能将迁移到构建系统。- 改进了类型系统的延迟分析,提升编译性能。
- 禁止在
packed struct和packed union中使用指针类型。 - 允许小整数类型安全地隐式转换为浮点数。
- 移除
-
标准库升级:
- 文件系统 (
fs) 和网络 (net) 的所有 API 都已迁移,现在需要传入std.Io实例。这会带来大量但简单的代码改动。 - 新增了 Deflate 压缩算法的实现,性能与 zlib 相当。
heap.ArenaAllocator现已成为无锁且线程安全的实现。
- 文件系统 (
-
平台与调试支持:
- 新增了对
loongarch64-linux等更多架构和操作系统的原生测试支持。 - 大幅改进了所有主要目标平台上的栈回溯 (stack trace) 支持,崩溃时能提供更可靠的调用栈信息。
- 移除了对 Oracle Solaris、IBM AIX 和 z/OS 等专有操作系统的支持。
- 新增了对
升级时,开发者最需要关注的改动是 所有 I/O 操作都需要适配新的 std.Io 接口。建议查阅官方文档,将 fs、net、process 和 time 等相关代码迁移到新 API。
加入开源交流群
请加站长微信,免费进入交流群,和开源爱好者一起讨论。