Zig 0.16.0 发布说明:"Juicy Main"
摘要
Zig 0.16.0 发布了一个名为 'Juicy Main' 的新特性,它为 main() 函数提供了依赖注入功能,方便地访问分配器、IO、环境变量和命令行参数。
暂无内容
查看缓存全文
缓存时间: 2026/04/20 08:27
# Zig 0.16.0 发布说明:“Juicy Main”
来源:https://simonwillison.net/2026/Apr/15/juicy-main/
2026年4月15日 \- 链接博客
**Zig 0.16.0 发布说明:“Juicy Main”(https://ziglang.org/download/0.16.0/release-notes.html#Juicy-Main)**(来自 https://lobste.rs/s/4vvozb/zig_0_16_0_release_notes)Zig 的发布说明*真的非常出色*——全面、详细,并且每个新功能都附有相关的使用示例。
在新发布的 Zig 0.16.0 中,特别值得注意的是他们称之为“Juicy Main”的特性——这是一个针对程序 `main()` 函数的依赖注入功能,通过接受一个 `process.Init` 参数,可以访问一个包含有用属性的结构体:
``
const std = @import("std");
pub fn main(init: std.process.Init) !void {
/// 用于临时堆分配的通用分配器:
const gpa = init.gpa;
/// 默认的 Io 实现:
const io = init.io;
/// 访问环境变量:
std.log.info("{d} 个环境变量", .{init.environ_map.count()});
/// 访问命令行参数
const args = try init.minimal.args.toSlice(
init.arena.allocator()
);
}
``
相似文章
Zig 构建速度正在提升
Zig 0.15 相比 0.14 在编译时性能有显著提升,构建脚本编译时间从约 7 秒降至约 1.7 秒,完整构建时间从 41 秒降至 32 秒,且仍使用 LLVM。本文重点介绍了自托管后端和增量编译方面的进展。
构建系统重构
Zig 构建系统已经重构,将配置器和制造器进程分离,支持缓存、发布模式编译,并且'zig build'命令速度提升高达90%。这一变化提高了性能,并允许构建系统在不减速的情况下增加功能。
Zig ELF 链接器改进开发日志
新的 Zig ELF 链接器现在支持外部库和 C 源码的快速增量编译,在 x86_64 Linux 上能够实现毫秒级重建。
Zig 0.16 中的异步 I/O:今日视角
Zig 0.16 推出了新的 std.Io 接口,用于跨平台 I/O。zio 库通过栈式协程和操作系统级异步 API 提供了完整的异步实现,无需每个任务一个线程即可实现高效的并发任务。
@bitCast 新语义与 LLVM 后端改进
Zig 语言引入了新的 @bitCast 语义,并通过更改整数降低(integer lowering)来避免编译错误,并更好地与编译器优化对齐,从而改进了其 LLVM 后端。