{"article":{"slug":"zls-0-17-0","title":"ZLS 0.17.0","subtitle":null,"summary":"Release notes for ZLS 0.17.0, the Zig language server from zigtools: feature improvements such as not following aliases when renaming symbols, bug fixes, and download links for all supported platforms.","content_type":"changelog","language":"en","canonical_url":"https://zigtools.org/zls/releases/0.17.0/","author":{"name":null,"url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Zigtools","url":"https://zigtools.org/","listing_slug":null,"listing":null},"topics":[{"name":"Developer Tools","slug":"developer-tools","url":"https://listedarticles.com/topics/developer-tools"},{"name":"Programming Languages","slug":"programming-languages","url":"https://listedarticles.com/topics/programming-languages"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":524,"reading_minutes":2,"published_at":"2026-10-22T02:14:36.930Z","added_at":"2026-10-22T02:14:36.930Z","updated_at":"2026-10-22T02:14:36.930Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/zls-0-17-0","markdown_url":"https://listedarticles.com/articles/zls-0-17-0.md","example":false,"citation":"Zigtools. \"ZLS 0.17.0.\" 22 Oct 2026. https://zigtools.org/zls/releases/0.17.0/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://zigtools.org/zls/releases/0.17.0/"},"body_markdown":"# ZLS 0.17.0\n\n## Feature improvements\n\n### Don’t follow aliases when renaming symbol ([#3199](https://github.com/zigtools/zls/pull/3199))\n\nConsider the following source file:\n\n```\nconst S = struct {\n    fn foo() void {}\n};\ncomptime {\n    const foo = S.foo;\n    foo();\n}\n```\n\n- Renaming `foo()` will only rename `foo()` and const `foo`\n- Renaming `fn foo` is unchanged and will rename all four locations\n- References are also unchanged and will provide all four locations no matter where it has been requested\n\n## Build System Integration\n\nDuring the Zig 0.17 development cycle, the [separation of maker process and configurer process](https://ziglang.org/download/0.17.0/release-notes.html#Separate-the-Maker-Process-from-the-Configurer-Process) has broken critical build system integration features in ZLS. Most of them have since been restored using the [build system protocol](https://ziglang.org/download/0.17.0/release-notes.html#Build-Server-Protocol) but various regressions remain that are anticipated to be resolved during the next release cycle.\n\nOn the positive side, the new protocol lays the foundation for future improvements in ZLS and related tooling. Especially editors could utilize it to integrate unit testing, fuzzing, code coverage reports or debugging capabilities that are fully aware of the Zig build system.\n\nAll known regressions are tracked in [#3277](https://github.com/zigtools/zls/issues/3277) and listed below:\n\n### Package `@import`s in `build.zig`\n\nType resolution for package imports in `build.zig` files have regressed.\n\nUpstream Zig Issue: [ziglang/zig#36387](https://codeberg.org/ziglang/zig/issues/36387)\n\n### Module `@import`s to exported modules without a compile step\n\nType resolution for modules that are only exported using `b.addModule` but aren’t tied to a compile step have regressed.\n\nAn `build.zig` file that would be affected:\n\n```\nconst std = @import(\"std\");\npub fn build(b: *std.Build) void {\n    _ = b.addModule(\"foo\", .{\n        .root_source_file = b.path(\"root.zig\"),\n        .imports = &.{\n            .{ .name = \"bar\", .module = b.createModule(.{ .root_source_file = b.path(\"bar.zig\") }) },\n        },\n    });\n}\n```\n\nIn the above example, `@import(\"bar\")` will not be resolved.\n\nUpstream Zig Issue: [ziglang/zig#36388](https://codeberg.org/ziglang/zig/issues/36388)\n\n### Build system protocol file watching doesn’t work on windows\n\nFile watching has regressed on windows due to a bug in the build system protocol. This does not affect the CLI when running `zig build --watch`.\n\nZLS does work around this issue by receiving file save events through the LSP protocol. File changes through external programs (e.g. version control) will not be detected.\n\nUpstream Zig Issue: [ziglang/zig#37236](https://codeberg.org/ziglang/zig/issues/37236)\n\n## Contributors\n\nHere is a list of everyone who has made at least one contribution to this release of ZLS:\n\n- Techatrix\n- FnControlOption\n- psznm\n- xdBronch\n- Khang Nguyen Duy\n- Akhilesh Arora\n- James\n- Jassiel Ovando\n- fomgleb\n- l1yefeng\n\n## Sponsors\n\nWe’d like to take a second to thank all our awesome [contributors](https://github.com/zigtools/zls/graphs/contributors) and donators/backers/sponsors; if you have time or money to spare, consider partaking in either of these options - they help keep ZLS awesome for everyone!\n\n[![OpenCollective Backers](https://opencollective.com/zigtools/backers.svg?limit=1000)](https://opencollective.com/zigtools#category-CONTRIBUTE)\n\n**Full Changelog**: [0.16.0…0.17.0](https://github.com/zigtools/zls/compare/0.16.0...0.17.0)\n\n## Release Artifacts\n\nAll files are signed with [minisign](https://jedisct1.github.io/minisign/) using this public key:\n\n```\nRWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex\n```\n\n| OS | Arch | Filename | Signature | Size |\n| --- | --- | --- | --- | --- |\n| Windows | x86\\_64 | [zls-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 MiB |\n| Windows | aarch64 | [zls-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 MiB |\n| Windows | x86 | [zls-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 MiB |\n| macOS | x86\\_64 | [zls-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 MiB |\n| macOS | aarch64 | [zls-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 MiB |\n| Linux | x86\\_64 | [zls-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 MiB |\n| Linux | aarch64 | [zls-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 MiB |\n| Linux | arm | [zls-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 MiB |\n| Linux | riscv64 | [zls-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 MiB |\n| Linux | powerpc64le | [zls-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 MiB |\n| Linux | x86 | [zls-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 MiB |\n| Linux | loongarch64 | [zls-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 MiB |\n| Linux | s390x | [zls-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 MiB |\n| WASI | wasm32 | [zls-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 |\n","body_html":"<h1 id=\"zls-0-17-0\">ZLS 0.17.0</h1>\n<h2 id=\"feature-improvements\">Feature improvements</h2>\n<h3 id=\"don-t-follow-aliases-when-renaming-symbol-3199\">Don’t follow aliases when renaming symbol (<a href=\"https://github.com/zigtools/zls/pull/3199\" rel=\"nofollow ugc noopener\">#3199</a>)</h3>\n<p>Consider the following source file:</p>\n<pre><code>const S = struct {\n    fn foo() void {}\n};\ncomptime {\n    const foo = S.foo;\n    foo();\n}</code></pre>\n<ul><li>Renaming <code>foo()</code> will only rename <code>foo()</code> and const <code>foo</code></li><li>Renaming <code>fn foo</code> is unchanged and will rename all four locations</li><li>References are also unchanged and will provide all four locations no matter where it has been requested</li></ul>\n<h2 id=\"build-system-integration\">Build System Integration</h2>\n<p>During the Zig 0.17 development cycle, the <a href=\"https://ziglang.org/download/0.17.0/release-notes.html#Separate-the-Maker-Process-from-the-Configurer-Process\" rel=\"nofollow ugc noopener\">separation of maker process and configurer process</a> has broken critical build system integration features in ZLS. Most of them have since been restored using the <a href=\"https://ziglang.org/download/0.17.0/release-notes.html#Build-Server-Protocol\" rel=\"nofollow ugc noopener\">build system protocol</a> but various regressions remain that are anticipated to be resolved during the next release cycle.</p>\n<p>On the positive side, the new protocol lays the foundation for future improvements in ZLS and related tooling. Especially editors could utilize it to integrate unit testing, fuzzing, code coverage reports or debugging capabilities that are fully aware of the Zig build system.</p>\n<p>All known regressions are tracked in <a href=\"https://github.com/zigtools/zls/issues/3277\" rel=\"nofollow ugc noopener\">#3277</a> and listed below:</p>\n<h3 id=\"package-imports-in-build-zig\">Package <code>@import</code>s in <code>build.zig</code></h3>\n<p>Type resolution for package imports in <code>build.zig</code> files have regressed.</p>\n<p>Upstream Zig Issue: <a href=\"https://codeberg.org/ziglang/zig/issues/36387\" rel=\"nofollow ugc noopener\">ziglang/zig#36387</a></p>\n<h3 id=\"module-imports-to-exported-modules-without-a-compile-step\">Module <code>@import</code>s to exported modules without a compile step</h3>\n<p>Type resolution for modules that are only exported using <code>b.addModule</code> but aren’t tied to a compile step have regressed.</p>\n<p>An <code>build.zig</code> file that would be affected:</p>\n<pre><code>const std = @import(&quot;std&quot;);\npub fn build(b: *std.Build) void {\n    _ = b.addModule(&quot;foo&quot;, .{\n        .root_source_file = b.path(&quot;root.zig&quot;),\n        .imports = &amp;.{\n            .{ .name = &quot;bar&quot;, .module = b.createModule(.{ .root_source_file = b.path(&quot;bar.zig&quot;) }) },\n        },\n    });\n}</code></pre>\n<p>In the above example, <code>@import(&quot;bar&quot;)</code> will not be resolved.</p>\n<p>Upstream Zig Issue: <a href=\"https://codeberg.org/ziglang/zig/issues/36388\" rel=\"nofollow ugc noopener\">ziglang/zig#36388</a></p>\n<h3 id=\"build-system-protocol-file-watching-doesn-t-work-on-windows\">Build system protocol file watching doesn’t work on windows</h3>\n<p>File watching has regressed on windows due to a bug in the build system protocol. This does not affect the CLI when running <code>zig build --watch</code>.</p>\n<p>ZLS does work around this issue by receiving file save events through the LSP protocol. File changes through external programs (e.g. version control) will not be detected.</p>\n<p>Upstream Zig Issue: <a href=\"https://codeberg.org/ziglang/zig/issues/37236\" rel=\"nofollow ugc noopener\">ziglang/zig#37236</a></p>\n<h2 id=\"contributors\">Contributors</h2>\n<p>Here is a list of everyone who has made at least one contribution to this release of ZLS:</p>\n<ul><li>Techatrix</li><li>FnControlOption</li><li>psznm</li><li>xdBronch</li><li>Khang Nguyen Duy</li><li>Akhilesh Arora</li><li>James</li><li>Jassiel Ovando</li><li>fomgleb</li><li>l1yefeng</li></ul>\n<h2 id=\"sponsors\">Sponsors</h2>\n<p>We’d like to take a second to thank all our awesome <a href=\"https://github.com/zigtools/zls/graphs/contributors\" rel=\"nofollow ugc noopener\">contributors</a> and donators/backers/sponsors; if you have time or money to spare, consider partaking in either of these options - they help keep ZLS awesome for everyone!</p>\n<p><a href=\"https://opencollective.com/zigtools#category-CONTRIBUTE\" rel=\"nofollow ugc noopener\"><img src=\"https://opencollective.com/zigtools/backers.svg?limit=1000\" alt=\"OpenCollective Backers\" loading=\"lazy\" decoding=\"async\" referrerpolicy=\"no-referrer\" /></a></p>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zigtools/zls/compare/0.16.0...0.17.0\" rel=\"nofollow ugc noopener\">0.16.0…0.17.0</a></p>\n<h2 id=\"release-artifacts\">Release Artifacts</h2>\n<p>All files are signed with <a href=\"https://jedisct1.github.io/minisign/\" rel=\"nofollow ugc noopener\">minisign</a> using this public key:</p>\n<pre><code>RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex</code></pre>\n<div class=\"table-wrap\"><table><thead><tr><th>OS</th><th>Arch</th><th>Filename</th><th>Signature</th><th>Size</th></tr></thead><tbody><tr><td>Windows</td><td>x86_64</td><td><a href=\"https://builds.zigtools.org/zls-x86_64-windows-0.17.0.zip\" rel=\"nofollow ugc noopener\">zls-x86_64-windows-0.17.0.zip</a></td><td><a href=\"https://builds.zigtools.org/zls-x86_64-windows-0.17.0.zip.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4.65 MiB</td></tr><tr><td>Windows</td><td>aarch64</td><td><a href=\"https://builds.zigtools.org/zls-aarch64-windows-0.17.0.zip\" rel=\"nofollow ugc noopener\">zls-aarch64-windows-0.17.0.zip</a></td><td><a href=\"https://builds.zigtools.org/zls-aarch64-windows-0.17.0.zip.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4.38 MiB</td></tr><tr><td>Windows</td><td>x86</td><td><a href=\"https://builds.zigtools.org/zls-x86-windows-0.17.0.zip\" rel=\"nofollow ugc noopener\">zls-x86-windows-0.17.0.zip</a></td><td><a href=\"https://builds.zigtools.org/zls-x86-windows-0.17.0.zip.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4.71 MiB</td></tr><tr><td>macOS</td><td>x86_64</td><td><a href=\"https://builds.zigtools.org/zls-x86_64-macos-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-x86_64-macos-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-x86_64-macos-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>1.16 MiB</td></tr><tr><td>macOS</td><td>aarch64</td><td><a href=\"https://builds.zigtools.org/zls-aarch64-macos-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-aarch64-macos-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-aarch64-macos-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>1.02 MiB</td></tr><tr><td>Linux</td><td>x86_64</td><td><a href=\"https://builds.zigtools.org/zls-x86_64-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-x86_64-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-x86_64-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>3.88 MiB</td></tr><tr><td>Linux</td><td>aarch64</td><td><a href=\"https://builds.zigtools.org/zls-aarch64-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-aarch64-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-aarch64-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>3.65 MiB</td></tr><tr><td>Linux</td><td>arm</td><td><a href=\"https://builds.zigtools.org/zls-arm-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-arm-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-arm-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>3.83 MiB</td></tr><tr><td>Linux</td><td>riscv64</td><td><a href=\"https://builds.zigtools.org/zls-riscv64-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-riscv64-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-riscv64-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4.39 MiB</td></tr><tr><td>Linux</td><td>powerpc64le</td><td><a href=\"https://builds.zigtools.org/zls-powerpc64le-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-powerpc64le-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-powerpc64le-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>3.77 MiB</td></tr><tr><td>Linux</td><td>x86</td><td><a href=\"https://builds.zigtools.org/zls-x86-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-x86-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-x86-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>3.88 MiB</td></tr><tr><td>Linux</td><td>loongarch64</td><td><a href=\"https://builds.zigtools.org/zls-loongarch64-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-loongarch64-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-loongarch64-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4 MiB</td></tr><tr><td>Linux</td><td>s390x</td><td><a href=\"https://builds.zigtools.org/zls-s390x-linux-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-s390x-linux-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-s390x-linux-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>4.15 MiB</td></tr><tr><td>WASI</td><td>wasm32</td><td><a href=\"https://builds.zigtools.org/zls-wasm32-wasi-0.17.0.tar.xz\" rel=\"nofollow ugc noopener\">zls-wasm32-wasi-0.17.0.tar.xz</a></td><td><a href=\"https://builds.zigtools.org/zls-wasm32-wasi-0.17.0.tar.xz.minisig\" rel=\"nofollow ugc noopener\">minisig</a></td><td>2.36 MiB</td></tr></tbody></table></div>","headings":[{"level":1,"text":"ZLS 0.17.0","id":"zls-0-17-0"},{"level":2,"text":"Feature improvements","id":"feature-improvements"},{"level":3,"text":"Don’t follow aliases when renaming symbol (#3199)","id":"don-t-follow-aliases-when-renaming-symbol-3199"},{"level":2,"text":"Build System Integration","id":"build-system-integration"},{"level":3,"text":"Package @imports in build.zig","id":"package-imports-in-build-zig"},{"level":3,"text":"Module @imports to exported modules without a compile step","id":"module-imports-to-exported-modules-without-a-compile-step"},{"level":3,"text":"Build system protocol file watching doesn’t work on windows","id":"build-system-protocol-file-watching-doesn-t-work-on-windows"},{"level":2,"text":"Contributors","id":"contributors"},{"level":2,"text":"Sponsors","id":"sponsors"},{"level":2,"text":"Release Artifacts","id":"release-artifacts"}]}}