作者:Matthew Lugg
在上个月合并了类型解析(type resolution)的相关改动后,我花了一些时间处理个人项目,但最近我还是抽出时间对 LLVM 代码生成后端进行了一些改进。这些改进包含多个方面,旨在实现不同的目标,其中一个用户能直接感受到的好处是:我成功让 LLVM 后端支持了增量编译。
遗憾的是,这无法加快令人头疼的“LLVM Emit Object”(生成对象文件)阶段,因为该过程耗时完全取决于 LLVM 本身。然而,增量编译的意义在于能最大限度减少 Zig 编译器本身代码的执行时间。这意味着,如果你的代码存在编译错误(此时会跳过“LLVM Emit Object”阶段),你通常能非常迅速地看到这些错误。(当然,在构建成功的情况下,它也能提供一定的速度提升。)
目前,该功能已在 master 分支的构建版本中可用,并将包含在即将发布的 0.16.0 版本中(我们很快就会为其打上标签)。
对于还没尝试过的用户,特别是正在使用 Zig master 分支的用户,请务必通过运行 zig build -fincremental --watch 来体验一下增量编译!Zig 核心团队在我们的工作流中已经使用增量编译一年多了,并从中受益匪浅;我们也收到了用户们的积极反馈。目前该功能已相对稳定,很多人都惊讶地发现,只需在几毫秒而非几秒内就能获取最新的编译错误,能节省多少时间。
虽然我个人还没怎么在 LLVM 后端使用过增量编译,但目前持续集成(CI)中所有的增量编译测试覆盖率都已经为 LLVM 后端开启,且我从用户那里得到了积极反馈,所以绝对值得一试。一如既往,如果你在使用增量编译时遇到 Bug,请尽可能向我们反馈!
谢谢大家,希望这些改进对你们有用。
https://ziglang.org/devlog/2026/#2026-04-08
加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来:
- 供稿,分享自己使用 Zig 的心得
- 改进 ZigCC 组织下的开源项目
- 加入微信群、Telegram 群组
作者:Matthew Lugg
在上个月合并了类型解析(type resolution)的相关改动后,我花了一些时间处理个人项目,但最近我还是抽出时间对 LLVM 代码生成后端进行了一些改进。这些改进包含多个方面,旨在实现不同的目标,其中一个用户能直接感受到的好处是:我成功让 LLVM 后端支持了增量编译。
遗憾的是,这无法加快令人头疼的“LLVM Emit Object”(生成对象文件)阶段,因为该过程耗时完全取决于 LLVM 本身。然而,增量编译的意义在于能最大限度减少 Zig 编译器本身代码的执行时间。这意味着,如果你的代码存在编译错误(此时会跳过“LLVM Emit Object”阶段),你通常能非常迅速地看到这些错误。(当然,在构建成功的情况下,它也能提供一定的速度提升。)
目前,该功能已在 master 分支的构建版本中可用,并将包含在即将发布的 0.16.0 版本中(我们很快就会为其打上标签)。
对于还没尝试过的用户,特别是正在使用 Zig master 分支的用户,请务必通过运行
zig build -fincremental --watch来体验一下增量编译!Zig 核心团队在我们的工作流中已经使用增量编译一年多了,并从中受益匪浅;我们也收到了用户们的积极反馈。目前该功能已相对稳定,很多人都惊讶地发现,只需在几毫秒而非几秒内就能获取最新的编译错误,能节省多少时间。虽然我个人还没怎么在 LLVM 后端使用过增量编译,但目前持续集成(CI)中所有的增量编译测试覆盖率都已经为 LLVM 后端开启,且我从用户那里得到了积极反馈,所以绝对值得一试。一如既往,如果你在使用增量编译时遇到 Bug,请尽可能向我们反馈!
谢谢大家,希望这些改进对你们有用。
加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来: