zls 0.17.0
摘要
ZLS 0.17.0 发布,改进了重命名时的符号别名处理,并恢复了与 Zig 新构建系统协议的大部分集成,但仍有一些回归问题待后续版本修复。
<p><a href="https://lobste.rs/s/hty1qk/zls_0_17_0">评论</a></p>
查看缓存全文
缓存时间: 2026/10/21 16:21
# ZLS 0.17.0
来源:https://zigtools.org/zls/releases/0.17.0/
## 功能改进
### 重命名符号时不再追踪别名 \(\#3199 (https://github.com/zigtools/zls/pull/3199)\)
请看以下源文件:
``
const S = struct {
fn foo() void {}
};
comptime {
const foo = S.foo;
foo();
}
``
- 重命名`foo\(\)`只会重命名`foo\(\)`和 const`foo`
- 重命名`fn foo`的行为保持不变,会重命名全部四处位置
- 引用查找的行为也保持不变,无论从何处发起请求,都会返回全部四处位置
## 构建系统集成
在 Zig 0\.17 开发周期中,构建执行进程与配置进程的分离 (https://ziglang.org/download/0.17.0/release-notes.html#Separate-the-Maker-Process-from-the-Configurer-Process)破坏了 ZLS 中一些关键的构建系统集成功能,其中大部分功能现已通过构建系统协议 (https://ziglang.org/download/0.17.0/release-notes.html#Build-Server-Protocol)恢复,但仍存在一些功能退化问题,预计将在下一个发布周期中解决\.
积极的一面是,新协议为 ZLS 及相关工具未来的改进奠定了基础\. 尤其是编辑器,可以利用该协议集成充分感知 Zig 构建系统的单元测试、模糊测试、代码覆盖率报告或调试功能\.
所有已知的功能退化问题都在\#3277 (https://github.com/zigtools/zls/issues/3277)中跟踪,具体如下:
### `build\.zig`中的包`@import`
`build\.zig`文件中包导入的类型解析出现了功能退化\.
Zig 上游问题:ziglang/zig\#36387 (https://codeberg.org/ziglang/zig/issues/36387)
### 通过模块`@import`导入未关联编译步骤的导出模块
对于仅通过`b\.addModule`导出、但未关联编译步骤的模块,其类型解析出现了功能退化\.
以下是一个会受影响的`build\.zig`文件:
``
const std = @import("std");
pub fn build(b: *std.Build) void {
_ = b.addModule("foo", .{
.root_source_file = b.path("root.zig"),
.imports = &.{
.{ .name = "bar", .module = b.createModule(.{ .root_source_file = b.path("bar.zig") }) },
},
});
}
``
在上面的示例中,`@import\("bar"\)`将无法解析\.
Zig 上游问题:ziglang/zig\#36388 (https://codeberg.org/ziglang/zig/issues/36388)
### 构建系统协议的文件监视功能在 Windows 上无法工作
由于构建系统协议中的一个错误,Windows 上的文件监视功能出现了退化\. 这不会影响运行`zig build \-\-watch`时的命令行功能\.
ZLS 通过接收 LSP 协议中的文件保存事件来绕过此问题\. 通过外部程序 \(例如版本控制工具\) 进行的文件更改将无法被检测到\.
Zig 上游问题:ziglang/zig\#37236 (https://codeberg.org/ziglang/zig/issues/37236)
## 贡献者
以下是为此版本的 ZLS 做出过至少一次贡献的所有人员:
- Techatrix
- FnControlOption
- psznm
- xdBronch
- Khang Nguyen Duy
- Akhilesh Arora
- James
- Jassiel Ovando
- fomgleb
- l1yefeng
## 赞助者
我们想借此机会感谢所有出色的贡献者 (https://github.com/zigtools/zls/graphs/contributors)以及捐赠者、支持者和赞助者;如果您有空余时间或资金,请考虑以其中一种方式参与 \- 这些支持能帮助 ZLS 持续为所有人提供出色的体验\!
OpenCollective 支持者 (https://opencollective.com/zigtools#category-CONTRIBUTE)**完整变更日志**:0\.16\.0...0\.17\.0 (https://github.com/zigtools/zls/compare/0.16.0...0.17.0)
## 发布文件
所有文件均使用以下公钥通过minisign (https://jedisct1.github.io/minisign/)签名:
``
RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex
``
操作系统架构文件名签名大小Windowsx86\_64zls\-x86\_64\-windows\-0\.17\.0\.zip (https://builds.zigtools.org/zls-x86_64-windows-0.17.0.zip)minisig (https://builds.zigtools.org/zls-x86_64-windows-0.17.0.zip.minisig)4\.65 MiBWindowsaarch64zls\-aarch64\-windows\-0\.17\.0\.zip (https://builds.zigtools.org/zls-aarch64-windows-0.17.0.zip)minisig (https://builds.zigtools.org/zls-aarch64-windows-0.17.0.zip.minisig)4\.38 MiBWindowsx86zls\-x86\-windows\-0\.17\.0\.zip (https://builds.zigtools.org/zls-x86-windows-0.17.0.zip)minisig (https://builds.zigtools.org/zls-x86-windows-0.17.0.zip.minisig)4\.71 MiBmacOSx86\_64zls\-x86\_64\-macos\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-x86_64-macos-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-x86_64-macos-0.17.0.tar.xz.minisig)1\.16 MiBmacOSaarch64zls\-aarch64\-macos\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-aarch64-macos-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-aarch64-macos-0.17.0.tar.xz.minisig)1\.02 MiBLinuxx86\_64zls\-x86\_64\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-x86_64-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-x86_64-linux-0.17.0.tar.xz.minisig)3\.88 MiBLinuxaarch64zls\-aarch64\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-aarch64-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-aarch64-linux-0.17.0.tar.xz.minisig)3\.65 MiBLinuxarmzls\-arm\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-arm-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-arm-linux-0.17.0.tar.xz.minisig)3\.83 MiBLinuxriscv64zls\-riscv64\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-riscv64-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-riscv64-linux-0.17.0.tar.xz.minisig)4\.39 MiBLinuxpowerpc64lezls\-powerpc64le\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-powerpc64le-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-powerpc64le-linux-0.17.0.tar.xz.minisig)3\.77 MiBLinuxx86zls\-x86\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-x86-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-x86-linux-0.17.0.tar.xz.minisig)3\.88 MiBLinuxloongarch64zls\-loongarch64\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-loongarch64-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-loongarch64-linux-0.17.0.tar.xz.minisig)4 MiBLinuxs390xzls\-s390x\-linux\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-s390x-linux-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-s390x-linux-0.17.0.tar.xz.minisig)4\.15 MiBWASIwasm32zls\-wasm32\-wasi\-0\.17\.0\.tar\.xz (https://builds.zigtools.org/zls-wasm32-wasi-0.17.0.tar.xz)minisig (https://builds.zigtools.org/zls-wasm32-wasi-0.17.0.tar.xz.minisig)2\.36 MiB
相似文章
Zig 0.17.0 发布说明
Zig 0.17.0 发布,包含 5 个月开发成果、206 位贡献者的 925 次提交,重点包括构建系统重构(引入 Build Server Protocol)、ELF 链接器增强以及 x86_64-linux 上的增量编译支持。
构建系统重构
Zig 构建系统已经重构,将配置器和制造器进程分离,支持缓存、发布模式编译,并且'zig build'命令速度提升高达90%。这一变化提高了性能,并允许构建系统在不减速的情况下增加功能。
所有包管理功能已从编译器移至构建系统
Zig将所有包管理功能从编译器移至构建系统,从而减小二进制文件大小,并简化补丁和安全检查。这一架构变化改进了构建服务器协议,并解除了ZLS集成的阻塞。
Kiesel 开发日志 #15:发布 0.4.0 版本
Kiesel 0.4.0 发布,升级到 Zig 0.17,新增 Kiesel.args/env API、多个迭代器提案实现(迭代器连接、包含检查、分块)以及等待字典支持,并成功移植到 SerenityOS。
Zig 构建速度正在提升
Zig 0.15 相比 0.14 在编译时性能有显著提升,构建脚本编译时间从约 7 秒降至约 1.7 秒,完整构建时间从 41 秒降至 32 秒,且仍使用 LLVM。本文重点介绍了自托管后端和增量编译方面的进展。