0.10.1 Release Notes
Download & Documentation
Zig is a general-purpose programming language and toolchain for maintaining
robust, optimal, and reusable software.
Backed by the Zig Software Foundation,
the project is financially sustainable. These core team members
work on Zig full-time:
Please consider a recurring donation to the ZSF
to help us pay more contributors!
This release contains only bug fixes.
Please see the 0.10.0 release notes for upgrading from 0.9.x to 0.10.x.
The support table is unchanged. See the
0.10.0 Support Table.
This release of Zig upgrades to
LLVM 15.0.7 which
fixed a handful of bugs, including regressions introduced in LLVM 15.0.0. At time of
writing, this hyperlink 404s because LLVM project did not provide release notes for this
version.
- cmake: move 'continue' statement to avoid cmake bug
- C backend: improve support for non-native float types
- C backend: enough fixes for compiler to to be able to build itself
- C backend: include zig.h with quotes instead of angle brackets.
- C backend: remove redundant definition of u16/i16 in zig.h
- C backend: fixed some C warnings and errors on gcc 11.3.0.
- c backend: Output string literals for array init of bytes
- Fixed typo in zig.h causing incorrect behavior.
- LLVM: mangle extern function names for Wasm target
- Fixed detection of MSVC installation on aarch64-windows.
- Fixed comptime array initialization.
- Fixed performance regression due to unnecessary copies. There is still another known similar performance regression that is not fixed in 0.10.1.
- Fixed CPU model detection for neoverse_n1 on aarch64-linux
- LLVM: fix canElideLoad behavior with loops
- Improved error messages.
- Fixed false positive dependency loops.
- Sema: resolve elem type for non-default aligned ptrs
- Compilation: fixed deadlock when compiling the same C source file twice
- Fixed compiler crashes.
- mingw: add missing vscprintf.c file
- LLVM: Respect alignment for `.union_init`
- Ensure f128 alignment matches c_longdouble alignment
- Support modifiers in inline assembly.
- Fixes bug in AVR codegen for LLVM backend
- Fixed compilation not failing when there are linker errors.
- cache: Fix LockViolation during C compilation paths (#13591)
- Fix another LockViolation case on Windows (#14162)
- Fixed C ABI bug regarding double types (#13592)
- fix Nvptx backend outputing files at the top level of zig-cache
- Sema: make `InferredErrorSet` deterministic
- Sema: avoid breaking hash contract when instantiating generic functions
- Sema: fix missing struct layout for llvm backend
- Miscellaneous fixes to the experimental ARM and aarch64 backends.
- cli: set sysroot when --sysroot option was passed
- macho: do not zero-out file if there are no nonzerofill sects
- macho: parse weak imports in tbd descriptors
- fixes to the DWARF parser
- Fixed handling of explicitly provided pdb
- windows: add native CPU and features detection for Armv8 chips
- Improve aarch64 feature detection based on the readouts from privileged system registers
- Remove incorrect assertion in readMachODebugInfo panicking during panic
- Add missing clang opts: -install_name and -undefined
- macho: add missing defs of compact unwind info records
- Bug fix: Prevent uninitialized parse nodes
- Sema: resolve lazy align in zirReify for union fields
- llvm codegen: fix f16,f32,f64 nan bitcasts
- support building zig on BSDs with dynamic libstdc++/libc++
- Elf: link libcompiler_rt after libc
- macos: enable -headerpad_max_install_names
- Translate-C Remainder Macro Fix
- Many compiler crashes are fixed.
- Many compile error messages are more helpful.
- LLVM: implement packed unions
- Sema: remove `block` and `src` parameters from `getBuiltin`
- translate-c: cast unsuffixed floats to f64
- LLVM: fix x86_64 sysV ABI of big vectors on avx512 enabled CPUs
- LLVM: improve emitted debug info
- Improve debuggability of programs built by the self hosted compiler.
- windows: fix _tls_index not being defined if libc wasn't linked, and fix x86 name mangling
- zig-cache: support windows drive + fwd-slash paths
- Fix error reporting the wrong line for struct field inits (#13502)
- Call ensureResultUsed before comptime .call is evaluated.
- add arm-features.h from glibc source (#12346)
- os: windows: fix unhandled error
- std.os.windows.ReadLink: add missing alignment of local data buffer
- Fixed condition variable (futex implementation) broadcast failing to wake all threads
- Fixes to make zig work better with BSD operating systems.
- uefi: Delete unneeded alignment and use default 4K
- Fixed update() method in PriorityQueue and PriorityDequeue (#13908)
- std.c: Add definition for pthread_key_t
- std.os.linux: Add setitimer and getitimer syscalls
- Handle sentinel slices in `std.mem.zeroes`
- add missing std.c.pthread_sigmask
- std.big.int.Mutable: fix set(@as(DoubleLimb, 0))
- wasi: fixes IterableDir.nextWasi for large directory
- Fix buffer overflow in fmt when DAZ is set
- std.os: fix alignment of Sigaction.handler_fn
- gzip: add missing header fields and bounds for header parsing
- os.windows.OpenFile: Add `USER_MAPPED_FILE` as a possible error
- Dir.openDirAccessMaskW: Add ACCESS_DENIED as a possible error
- wasi: fixes os.isatty on type mismatch (#13813)
- Add 0-length buffer checks to os.read and os.write
- Fixes to linux/bpf/btf.zig
- std: fix bug in Pcg32 fill function (#13894)
- std.net: check for localhost names before asking DNS
- std.os.linux.T: translate more MIPS values
- std.atomic.Queue: fix unget implementation and add doc
- std.Thread.Futex.PosixImpl.Address.from: fix `alignment` type
- Ed25519.KeyPair.fromSecretKey() didn't compile after the API changes (#13386)
- ed25519: recommend using the seed to recover a key pair
- std.crypto.ed25519 incremental signatures: hash the fallback noise (#13643)
- std.crypto.pwhash.bcrypt: inline the Feistel network function (#13416)
- crypto.salsa20: make the number of rounds a comptime parameter (#13442)
- crypto.core.aes: process 6 block in parallel instead of 8 on aarch64 (#13473)
- crypto.bcrypt: fix speed regression when using self-hosted compiler (#13518)
- detect -z stack-size arguments
- support -stack in addition to --stack for linker arg
- fix wrong flag name from earlier commit
- Fixed duplicate symbol error when linking libc on arm64 Windows.
- Added aarch64 outline atomics.
- Avoid using weak aliases.
- langref: Simplify printing types in examples
- packed struct fix example and clarify least to most significant ordering
- langref: add appendix and explain 'container' terminology
- Add docstrings to some functions in std.meta
- Improve doc comments for two functions (#13456)
- document std.heap.StackFallbackAllocator
- std.array_list: add a comment on every methods invalidating pointers.
Zig has
known bugs
and even some
miscompilations.
Zig is immature. Even with Zig 0.10.1, working on a non-trivial project
using Zig will likely require participating in the development process.
When Zig reaches 1.0.0, tier 1 support will gain a bug policy.
This is the final planned release in the 0.10.x branch.
Here are all the people who landed at least one contribution into this release:
- Andrew Kelley
- Jakub Konka
- Loris Cro
- Veikka Tuominen
- Frank Denis
- Jacob Young
- Cody Tapscott
- Casey Banner
- Guillaume Wenzek
- Michael Dusan
- Ganesan Rajagopal
- IntegratedQuantum
- Ryan Liptak
- Ali Chraghi
- David Gonzalez Martin
- Eric Joldasov
- Felix "xq" Queißner
- Frechdachs
- GethDW
- Hayden Pope
- Igor Anić
- Jan Philipp Hafer
- Jimmi Holst Christensen
- Joachim Schmidt
- Jonathan Marler
- Matt Chudleigh
- Micah Switzer
- Motiejus Jakštys
- Nathan Bourgeois
- Robert Burke
- Stevie Hryciw
- Takeshi Yoneda
- Tom Maenan Read Cutting
- Yujiri
- bfredl
- delitako
- fsh
- joachimschmidt557
- kcbanner
- mike
- mnordine
- mparadinha
- nc
- notcancername
- praschke
- r00ster91
- remeh
- shwqf
- sv99
- zooster
Special thanks to those who sponsor Zig.
Because of you, Zig is driven by the open source community, rather than the
goal of making profit. In particular, these fine folks sponsor Zig for
$50/month or more: