Hacker News 中文摘要

RSS订阅

Zig:重构构建系统 -- Zig: Build System Reworked

文章摘要

这篇文章介绍了Zig编程语言2026年5月的主要更新:重构了构建系统,将配置器进程与构建器进程分离。原先的构建过程会将所有内容编译成一个臃肿的调试模式进程,现在改为将构建逻辑编译成小型配置器进程,生成二进制配置文件后,再由父进程异步编译高效的发布模式构建器进程执行构建。

文章总结

以下是经过编辑整理后的中文内容,保留了技术细节并删除了无关内容:


Zig编程语言开发日志(2026年更新摘要)

2026年5月26日:构建系统重构

作者:Andrew Kelley
主要变更:
- 将构建流程拆分为配置器(configurer)和执行器(maker)两个独立进程
- 配置器将构建图序列化为二进制文件,执行器通过全局缓存复用编译结果
优化效果:
1. 仅需重新编译用户修改的build.zig逻辑
2. 当配置未变化时可跳过配置阶段(如添加-freference-trace参数时)
3. 执行器进程启用编译优化
实测zig build --help性能提升90%以上,内存占用减少7.4%。

破坏性变更
移除构建脚本对命令行参数的访问能力,改为run_cmd.addPassthruArgs()方法。

2026年4月8日:LLVM增量编译支持

作者:Matthew Lugg
关键改进:
- LLVM后端支持增量编译,显著加速错误检查阶段
- 建议通过-fincremental --watch参数启用
- 已在CI测试中验证稳定性,欢迎用户反馈问题

2026年3月10日:类型解析系统重设计

作者:Matthew Lugg
核心改进:
1. 惰性分析:未初始化的类型字段不再触发编译错误(如仅作为命名空间使用时)
2. 循环依赖检测:提供详细的依赖链追踪信息
3. 增量编译优化:修复"过度分析"问题,减少不必要的重编译

示例:
zig const Foo = struct { inner: Bar }; const Bar = struct { x: u32 align(@alignOf(Foo)) }; // 现在会明确提示循环依赖路径

2026年2月:I/O子系统重大更新

作者:Andrew Kelley & Jacob
新增实验性功能:
- 基于io_uring和Grand Central Dispatch的std.Io.Evented实现
- 支持用户态协程(fibers)
- 可通过统一接口切换线程/事件驱动模式(应用代码无需修改)

当前限制:
- 存在未诊断的性能下降问题
- 部分函数尚未实现
- 需要更多测试覆盖

2026年2月6日:包管理增强

作者:Andrew Kelley
两项改进:
1. 本地包存储:依赖项现在存放在项目根目录的zig-pkg/中(建议加入.gitignore)
2. 分支开发支持:通过--fork=/path/to/fork临时覆盖特定依赖项

底层优化专项

  1. Windows原生API优先

    • 绕过kernel32.dll直接调用ntdll.dll
    • 案例:用NtReadFile替代ReadFile避免不必要的堆分配
    • 随机数生成改用\\Device\\CNG直连
  2. Zig实现libc

    • 已删除250+个C源文件(剩余2032个)
    • 函数示例:strnlen直接用Zig实现
    • 优势:提升编译速度、减少二进制体积、支持未来I/O统一调度

(注:移除了政治相关内容及部分实现细节,保留技术演进主线)

评论总结

总结:

  1. 正面评价:
  • 赞赏Zig的编译速度和易用性(评论1、2、4) "Zig's compilation times are already terrific"(评论1) "a fantastic tool language...the go-to 'tinker in my garage' language"(评论2)
  • 肯定0.16.0版本的改进(评论4) "really happy with the results...set the language for a bright future"(评论4)
  1. 技术讨论:
  • 关于许可证的疑问(评论3) "what is (Expat) after MIT License"(评论3)
  • 关注Bun项目与Zig的关系(评论5) "does this also help bun's compilation times?"(评论5)
  1. 使用体验:
  • 开发者对Zig设计理念的认可(评论2) "Every time I hit a wall, I find the creators have thought of it already"(评论2)
  • 新版本带来的效率提升(评论4) "allows supper efficient code...whether it's implemented single-threaded, multi-threaded"(评论4)