After five months of development published the release of the programming language Zig 0.17.0, developed as a modern replacement for the C language. Zig tries to maintain the simplicity, flexibility, and predictability of C code generation, while adding innovations to make development more ergonomic and secure. Zig provides metaprogramming capabilities (executing code at compile time) and a modern type system designed with safety and performance in mind (optional types instead of null pointers, address alignment as part of the type, integer types from 0 to 65535 bits, tuples, etc.). The toolkit code is distributed under the MIT license.
206 developers took part in preparing the release and made 925 commits. Main changes:
- The Build System has been redesigned, in which the configuration process is separated from the build process. The caching system has been redesigned.
- Added the Build Server Protocol to allow clients to monitor and manage the build process.
- The native ELF linker has been significantly improved.
- The compiler implements the ability to use incremental compilation in Linux environments on systems with x86_64 architecture.
- Updated versions of LLVM 22, musl 1.2.5, glibc 2.44, Linux 7.2 kernel header files.
- Expanded support for target platforms loongarch32 and SPARC64. Added stack trace support on ARM and SPARC systems. Support for some assembly targets for the PowerPC architecture with glibc has been removed.
- A formal grammar specification has been proposed in the language, new built-in functions have been added (@backingInt, @fromBackingInt, @divCeil, @SpirvType, etc.), obsolete constructs have been removed (“a ** b”, “void{}”, “errdefer |err|”, “i0”).
- C-code translation tools moved to a separate package translate-c.
- The standard library offers a new memory allocation system, SafeAllocator, suitable for use in multi-threaded code. Module std.zon.parse has been redesigned.