Zig v0.17.0 is out, and it packs five months of work from 206 contributors across 925 commits into one release. The open-source language and toolchain for building robust, optimal, and reusable software has just hit a major milestone, and the update shows the project’s momentum ahead of its planned 1.0 tag.
The release notes are extensive, covering everything from language syntax changes to new platform support. The headline feature is the Build System rework, which introduces the Build Server Protocol. The ELF Linker has also been enhanced to the point where Incremental Compilation is expected to work for everyone on x86_64-linux.
The Build System Rebuild
The Build System rework is a headline feature of this release. It includes the introduction of the Build Server Protocol, which is part of a larger effort to make the build system more flexible and easier to extend.
Incremental Compilation is another major win. The ELF Linker improvements mean that changes are handled more efficiently. The expectation is that this will work for everyone on x86_64-linux.
Platform Support Expands
Zig v0.17.0 adds support for several new targets, particularly in the ARM space. aarch64-openbsd is now tested natively in Zig’s CI, ensuring high-quality support going forward. aarch64-freebsd and aarch64-netbsd CI jobs now run on pull requests, not just master pushes. aarch64-windows binaries, including the Zig Compiler, have been worked around so that the resulting binaries actually work.
loongarch32-linux-gnu[sf] targets have been added, and sparc64-linux support has been added to Zig. The new ELF linker now has better support for this target than LLD, which is a significant achievement for the project.
Several other targets have been added as well:
- arm-gba
- mipsel-psx
- powerpc-wiiu
- xtensa-linux
These can currently only be exercised via the C backend or the experimental LLVM backend.
PowerPC Targets Take a Hit
The release also drops support for some PowerPC targets. The reason is simple: glibc only supports the “double-double” format for long double on powerpc-linux-gnueabi[hf] targets, and Zig has never supported that IBM format and likely never will. As a result, this release drops support for those targets.
Powerpc-linux-musleabi[hf] targets remain supported because they use the IEEE format. For powerpc64-linux-gnu, Zig has only ever supported linking ELFv2 binaries for 64-bit PowerPC, and glibc does not officially support ELFv2 on big endian or IEEE long double. That means those targets are also gone.
| Target | Status |
|---|---|
| powerpc-linux-gnueabi[hf] | Dropped due to glibc “double-double” dependency |
| powerpc-linux-musleabi[hf] | Still supported, IEEE format |
| powerpc64-linux-gnu | Dropped, glibc does not support ELFv2 on big endian |
New Hardware Support
Specific hardware variants are getting attention too. aarch64-haiku supports cortex_a55. m68k- supports M68030. mips64-openbsd supports octeon. powerpc-netbsd supports 750. powerpc64-freebsd supports pwr8. powerpc64-linux supports pwr8. powerpc64-openbsd supports pwr9. s390x- supports arch11. sparc- supports generic. sparc-linux supports v9. sparc64- supports ultrasparc. xtensa-* supports esp32.
These are all obsolescent targets, meaning the compiler and standard library maintain best-effort support for them, but that support is expected to be removed eventually.
Language and Library Changes
The release notes document a range of language and library changes. The @bitCast, changes@backingInt, and @fromBackingInt functions have been added. @SpirvType, @divCeil, and @hasDecl have been introduced. The latter returns true only for Public Declarations comptime.
Several features have been removed entirely. errdefer Capture has been removed, as has i0. The internal keyword and the link_once Global Linkage have been removed. debug.SafetyLock has been removed in favor of Shared Lockingfmt.allocPrint, which has moved to mem.Allocator.
std.zon.parse has been reworked, and bit_set Variants have been deprecated. The Managed Ones std.lang.Type and lang.OptimizeMode have been replaced with lang.Optimize and lang.Optimize.runtimeSafety. mem.eql and mem.findDiff have been updated. Uri and net.HostName have been added. Step.Options has gained addOptionPathDirectory.
The Road to 1.0
The release notes describe the stabilization work as a key step in the roadmap, a requirement before tagging Zig 1.0. Since the release of Zig 0.16.0, a lot of progress has been made towards stabilizing the language.
The Zig Software Foundation, a 501(c)(3) non-profit organization, funds development. Donations are encouraged, especially recurring ones, to offer more billable hours to the core team. The foundation also provides donation receipts and supports migration away from GitHub Sponsors through Every.org.
What This Release Shows
The scale of the release is impressive. Five months of work from 206 contributors across 925 commits is a lot of engineering. The fact that the release ended up substantial, despite being originally predicted to be shorter, speaks to the project’s health.
The platform additions are notable because they cover a wide range of hardware, from embedded systems to server-class architectures. The decision to drop unsupported PowerPC targets is pragmatic. The technical reason is glibc’s “double-double” format, which Zig has never supported and likely never will.
The build system rework and incremental compilation improvements are developer-facing wins. The obsolescent targets are a reminder that open-source projects have to make hard choices about what they maintain. Best-effort support is better than nothing, but it is not a commitment.
For anyone evaluating Zig, the release notes are a useful map of what works and what doesn’t. The target matrix is detailed, and the roadmap section lays out the path to 1.0. The project is making steady progress, and this release shows what that looks like in practice.
The release is a clear signal that Zig is moving forward. The project is stabilizing, adding new platforms, and cutting dead weight. The road to 1.0 is getting clearer with each release.
Source material: “Zig v0.17.0,” ziglang.org.
Get the Notebook.
The day's best stories and every fresh verdict, in plain English, in your inbox by seven. One email a day, no more.

