Back
Zig 0.17.0 reworks builds and expands platform and language support
SiTech AI Team2 min read

Zig 0.17.0 reworks builds and expands platform and language support

Zig 0.17.0 brings a reworked build system, an enhanced ELF linker, broader platform support and language updates after five months of development from 206 contributors and 925 commits.

Major release scope

Zig 0.17.0 contains five months of work from 206 contributors across 925 commits. The release substantially changes the build system by separating the maker process from the configurer process, reworking the cache system, introducing configure cache poisoning and adding the Build Server Protocol. It also expands lazy dependency and formatting options.

The ELF linker has been enhanced to the point where incremental compilation is expected to work for everyone on x86_64-linux. Package management gains local path overrides, while Windows resource compilation moves to an external package.

Broader target coverage

Platform work includes native CI testing for aarch64-openbsd and pull request CI for aarch64-freebsd and aarch64-netbsd. Zig applies mandatory code hardening for aarch64-openbsd, works around an LLVM issue affecting most aarch64-windows binaries, and provides stack traces for crashes and failed assertions on 32-bit ARM and SPARC. Pointer authentication opcodes are now handled during AArch64 stack unwinding.

Support was added for loongarch32-linux-gnu targets, while 64-bit SPARC reached generally usable status. Target information was added for aarch64-switch, arm-gba, mipsel-psx and powerpc-wiiu. Very early xtensa-linux support is available through the C or experimental LLVM backend. The standard library also gained support for several niche Linux, OpenBSD and no-libc targets.

Language and library changes

Zig's formal grammar and implementation were reconciled through a generated recursive descent parser used as a fuzzing oracle. The @bitCast builtin now reinterprets the logical bit representation of a value and behaves the same regardless of target endianness. Its semantics changed for arrays and vectors, and casts from extern structs or unions are no longer permitted. The release notes advise auditing array or vector uses because some code may break without a compile error.

The @cImport builtin was removed, and std.Build.Step.TranslateC is deprecated in favor of an explicit dependency on the official ZSF translate-c package. New @backingInt and @fromBackingInt builtins replace the deprecated @intFromEnum and @enumFromInt builtins. Zig 0.17.0 also adds @SpirvType, introduces SafeAllocator and reworks StackFallbackAllocator.

SSiTech

SiTech — AI-powered web development

We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.