Zig 0.17 brings incremental rebuilds to most x86_64 Linux projects
Zig 0.17.0 was released on 1 October, after five months of work by 206 contributors across 925 commits, according to the project's release notes. The cycle ran longer than planned, and the two biggest pieces of it are the build system and the linker.
Incremental compilation becomes usable for most Linux x86_64 code. The new ELF linker, introduced in the previous release, has gained enough features — shared and static libraries, GOT generation, DWARF debug information, symbol versioning — that the project now expects incremental compilation to work for most projects targeting x86_64-linux. Running zig build -fincremental --watch makes the build system watch source files and rebuild only what changed. The new linker is still not the default in general, but it is already used in this incremental case, and the team hopes to remove the legacy ELF linker in the next release.
The build system is split in two. zig build now runs a project's build.zig in a separate process from the one that manages packages and executes the build graph. The executor is compiled once, with optimisations, after Zig is installed, and does not need rebuilding when build.zig changes. Configuration is serialised into a compact binary format that is part of a new Build Server Protocol, intended for editors and other tools; forking the build runner, the old way to get at that information, is no longer supported. --print-configuration renders the configuration as .zon. The cache system was also reworked, with directory entries and a metadata mode that treats a changed size, inode or modification time as a miss.
One language change needs a manual audit. @bitCast now reinterprets the logical bit representation of a value, which is endian-independent. Integer-to-integer casts and casts to packed structs behave as before, but casts involving arrays or vectors can produce different results, and the release notes warn this can happen without a compile error. Casts involving extern struct and extern union are no longer allowed. Other removals include array multiplication syntax, void{}, i0 and the errdefer capture; C translation is moving to an external package.
The project says it accepted about 25 language proposals and rejected about 125 during the cycle, as part of stabilising the language before 1.0. Targets dropped in this release include powerpc-linux-gnueabi[hf] and powerpc64-linux-gnu; 64-bit SPARC gains generally usable support.

Why it matters
For teams on Linux, the watch-mode rebuild is the practical reason to upgrade. The @bitCast change is the reason to read the notes first: any code that casts arrays or vectors, especially on big-endian targets, should be checked by hand, because the compiler will not flag it.