Zig v0.17.0 Released: Build System Overhaul and Incremental Compilation

Original: Zig v0.17.0

Why This Matters

Incremental compilation on x86_64-linux marks a concrete step toward Zig's production-ready 1.0 release.

Zig Software Foundation released Zig v0.17.0 on May 2025, representing 5 months of work across 925 commits from 206 contributors. Key changes include a reworked Build System with a new Build Server Protocol, an enhanced ELF Linker, and Incremental Compilation now expected to work for all x86_64-linux users.

Zig v0.17.0 ships after a longer-than-anticipated cycle, originally planned as a short release. The headline change is the Build System, which has been restructured to separate the Maker and Configurer processes, and introduces a Build Server Protocol. The ELF Linker has been enhanced enough that Incremental Compilation is now expected to work reliably for x86_64-linux targets — a meaningful step toward the project's stated 1.0 roadmap.

On the language side, several breaking changes land: `@bitCast` semantics changed, `void{}` syntax removed, `errdefer` capture removed, `i0` removed, and `@hasDecl` now returns true only for public declarations. New builtins `@backingInt`, `@fromBackingInt`, and `@SpirvType` are introduced. The grammar is now formally specified and fuzz-tested.

The standard library sees significant churn too: `StackFallbackAllocator` reworked, a new `SafeAllocator` introduced, `fmt.allocPrint` moved to `mem.Allocator`, and `std.zon.parse` redesigned. The toolchain updates to LLVM 22, musl 1.2.5, glibc 2.44, and includes macOS 27.0 and Linux 7.2 headers. LLVM loop vectorization is temporarily disabled to work around a regression. `aarch64-openbsd` gains native CI testing, and an LLVM bug affecting most aarch64-windows binaries is worked around.

Source

ziglang.org — Read original →