文章摘要
这篇文章介绍了Zig编程语言在ELF链接器方面的改进进展。开发者Matthew Lugg详细说明了自0.16.0版本发布以来新ELF链接器的开发情况,包括现已支持构建自托管Zig编译器并启用LLVM和LLD库等重要功能。新链接器目前仍需通过特定参数启用,但已取得显著进展。
文章总结
以下是文章主要内容的重新陈述,保留了核心细节并删减了非关键信息:
Zig 编程语言开发日志(2026年)
5月30日:ELF 链接器改进
作者:Matthew Lugg
- 新 ELF 链接器(Zig 0.16.0 引入)已支持构建自托管的 Zig 编译器(含 LLVM/LLD 库)。
- 关键特性:支持快速增量编译(如修改代码后仅需 30ms 完成重建)。
- 当前限制:暂不支持生成 DWARF 调试信息。
- 用户可尝试通过 -fnew-linker 启用新链接器,并反馈问题。
5月26日:构建系统重构
作者:Andrew Kelley
- 构建系统拆分为配置器(configurer)和执行器(maker),提升性能:
1. 仅需重新编译用户逻辑(build.zig),而非整个构建系统。
2. 未变更配置时跳过冗余步骤。
3. 执行器启用优化编译。
- 示例:zig build --help 耗时从 150ms 降至 14ms。
- 破坏性变更:run_cmd.addArgs(args) 改为 run_cmd.addPassthruArgs()。
4月8日:LLVM 增量编译支持
作者:Matthew Lugg
- LLVM 后端现支持增量编译,显著缩短错误检查时间(跳过耗时对象生成阶段)。
- 建议用户通过 -fincremental --watch 体验快速迭代开发。
3月10日:类型解析重设计
作者:Matthew Lugg
- 优化类型字段的惰性分析(避免未使用的类型触发编译错误)。
- 改进依赖循环错误提示(明确显示循环路径)。
- 增量编译性能提升,修复“过度分析”问题。
2月13日:io_uring 与 GCD I/O 实现
作者:Andrew Kelley
- 实验性支持 std.Io.Evented(基于协程的 I/O):
- Linux 使用 io_uring,macOS 使用 Grand Central Dispatch。
- 示例:相同应用代码可切换线程模型或事件驱动模型。
- 当前限制:性能未达预期,需进一步优化。
2月6日:包管理改进
- 本地依赖存储:依赖下载至项目目录
zig-pkg/,便于直接编辑和离线构建。 - 全局缓存压缩:减少存储占用,为未来 P2P 分发做准备。
--fork标志:临时替换依赖为本地路径(如测试修复分支),无需修改配置文件。
2月3日:绕过 Kernel32.dll
作者:Andrew Kelley
- 直接调用底层 ntdll.dll API 以提升性能:
- 示例1:熵生成绕过 advapi32.dll,避免首次调用延迟。
- 示例2:文件读写使用 NtReadFile,减少资源分配和错误处理开销。
1月31日:Zig 实现 libc
作者:Andrew Kelley
- 逐步用 Zig 代码替换第三方 libc 函数(已删除 250 个 C 文件)。
- 优势:提升编译速度、减少二进制体积、支持未来 I/O 统一调度(如集成 io_uring)。
- 测试工具:依赖 libc-test 确保数学函数准确性。
其他说明
- 版本计划:Zig 0.17.0 即将发布,包含上述多项改进。
- 用户反馈:鼓励测试开发版并报告问题,尤其是 libc 相关功能。
(注:政治相关内容未纳入技术摘要。)
评论总结
以下是评论内容的总结:
- 对Zig发展的积极评价
- 认为Zig将成为C语言的替代品,兼具高性能和快速迭代优势
- "Zig will become THE C replacement...iterate at the speed of JS or Python with performance of C or Rust" (bpavuk)
- "This is the promise that blew my mind...So happy to see this become reality!" (teabee89)
- 技术特性讨论
- 对增量链接与LTO优化的兼容性提出疑问
- "any kind of incremental linking, is mutually exclusive with link-time optimization?" (derefr)
- 关注跨平台支持情况
- "Will the Windows side for 0.17.x get some compiler improvements as well?" (quikoa)
- 与其他语言的比较
- 有用户将Zig视为Rust的潜在替代选择
- "is this the new cool thing on the street? no more Rust?" (c0rruptbytes)
- "glad I chose Zig as the target instead of Rust" (onlyrealcuzzo)
- 与其他快速编译语言的比较
- "Are there any other languages that offer similar compilation performance...Turbo Pascal" (ksec)
- 潜在应用场景
- 作为其他语言后端的可能性
- "porting the Raku backend...from C to Zig" (librasteve)
- 作为语言转译目标的优势
- "best build system design and was the best transpilation target" (onlyrealcuzzo)
- 社区反应
- 对近期开发动力的猜测
- "how much this work being pushed forward...is a response to the Bun drama" (bcardarella)
- 对特定功能变更的遗憾
- "still a little salty about
@cImportremoval" (bpavuk)
- "still a little salty about