← Fri, Oct 2 digest

Zig v0.17.0

read article ↗ hn thread ↗

Zig v0.17.0 introduces a reworked build system, updated builtin semantics like @bitCast, and extensive cross-compilation target enhancements.

summary is enough Release notes are extensive and best skimmed for breaking changes unless you are actively upgrading a project.

summary

Zig version 0.17.0 spans five months of development, featuring a reworked build system with a Build Server Protocol and an enhanced ELF linker. The release introduces major language breaking changes, including revised endian-agnostic @bitCast semantics, replacement of enum casting builtins with @backingInt, and the removal of @cImport. It also updates target tier support, expands CPU baseline detection, and adds @SpirvType for GPU programming.

key points

  1. @bitCast semantics are now fully endian-agnostic and disallow extern struct casts, potentially breaking existing code without compile errors.
  2. @backingInt and @fromBackingInt replace deprecated enum casting builtins.
  3. @cImport has been removed in favor of an explicit external package dependency for TranslateC.
  4. Array multiplication syntax (a ** b) has been removed in favor of @splat.

who should read it

Systems programmers and developers maintaining or evaluating Zig codebases.

discussion positive

consensus

Commenters widely praise Zig's strong language design and extensive target support as a compelling alternative to C.

pushback

Some users express friction and frustration over project policies regarding AI assistance in bug reports and leadership tone.

best comment by alexrp ↗

The fix could not be backported to LLVM 22 because it changed the LLVM library ABI. We also could not skip straight to LLVM 23 because that would make life harder for distro package maintainers.

Explains why loop vectorization is disabled in this release due to LLVM library ABI changes.

Generated by an LLM from the article and thread. Check the sources before relying on it.