Nominated Zig versions
Zig projects in the wild often use either stable Zig or nightly Zig.
- Stable Zig releases often occur just once or twice a year.
- Nightly Zig, as the name implies, gets released every night from the ‘main’ branch of Zig.
For projects like Mach wishing to keep up with modern Zig developments and improvements, stable Zig is simply too infrequent and outdated (waiting 6-12 months to get an awesome new feature like incremental compilation, or a critical linker fix, is not ideal.)
But nightly Zig is far too frequent: if every project is targetting a new Zig version every day, then libraries tend to not be compatible with one another in practice.
Nominated Zig is a sweet-spot between stable and nightly Zig: we nominate a new nightly Zig version every 6 weeks and target that.
This gives everyone 6 weeks to update their projects to the same Zig version, and everyone can move ‘in unison’ keeping their projects compatible with one another - rather than targetting a wide array of nightly Zig versions.
Schedule
On these days, the current nightly Zig version is nominated.
| Date | Day |
|---|---|
| January 1 | Thursday |
| February 12 | Thursday |
| March 26 | Thursday |
| May 7 | Thursday |
| June 18 | Thursday |
| July 30 | Thursday |
| September 10 | Thursday |
| October 22 | Thursday |
| December 3 | Thursday |
No special testing is performed beyond what Zig nightly already performs in e.g. its continuous integration testing. Sometimes a version may not be stable enough for a project using Zig, in which case you can e.g. hold back one version until the next one is nominated just 6 weeks later.
Nomination occurs on Thursdays, to give people (who are often maintaining Zig projects over their weekends) the ability to do so promptly on their weekend rather than during the week.
Where to get old versions
ziglang.org periodically purges old nightly Zig versions. As a result, recent nominated versions may be available there but older ones may not be. https://pkg.hexops.org is a Zig download mirror which hosts even older nominated Zig versions, and many popular tools in the community integrate with it directly.
Machine-readable version history
https://pkg.hexops.org/zig/index.json provides a machine-readable version history. It is a strict superset of https://ziglang.org/download/index.json - but with Mach versions added. A few types of Mach versions are added:
mach-latest-> always the latest nominated Zig version.2024.1.0-mach-> a nominated Zig version inYYYY.MM.DD-machformat (leading zeros omitted)0.3.0-mach-> an alias for the nominated Zig version that was used at the time of Mach v0.3 release.
What if we had just used stable zig in the past?
Periodically, the question comes up: “why not just use stable Zig versions?” The best way to answer this, and our own gauge for answering this, is to look at how this would’ve affected us in the past.
- Between Zig 0.15 and 0.16:
- Early access to Zig’s SPIR-V compiler backend, and ability of some Mach contributors to contribute to the SPIR-V backend, helped influence our future decisions for shading language.
- Between Zig 0.14 and 0.15:
- The
usingnamespaceremoval, http client, and writergate were beneficial for us.
- The
- Between Zig 0.13 and 0.14:
- We were able to identify a linker regression which prevented Mach from building/linking at all on macOS. This regression likely only affected Mach, as most projects do not use Zig ObjC bindings. If we hadn’t been able to identify this regression and give feedback to the Zig core team (who thankfully was able to fix it quickly!) then we may not have been able to upgrade to Zig 0.14 while keeping macOS support.
- Between Zig 0.12 and 0.13 (1.5 months):
- We were able to identify a linker regression which prevented using prebuilt WebGPU binaries on macOS, exactly one day after the 0.12 release. Again, this regression likely primarily affected Mach - so if we had been using stable Zig, we’d need to hope it got fixed in 0.13 which was a short development cycle - or wait ~10 months for 0.14 / regress our macOS support.
- Between Zig 0.11 and 0.12 (8.5 months)
- We were able to provide early feedback on the package manager and get various bugs/issues with it fixed for our use cases, being probably the earliest / most serious adopter of it. If we had not done this, we would’ve had no choice but to maintain our pre-package-manager dependency management system until Zig 0.13 was released ~10 months later.
- Between Zig 0.10 and 0.11 (9 months)
- Early package manager feedback.
Nominated Zig history
2024.11.0-mach
Zig 2024.11.0-mach and 0.14.0-dev.2577+271452d22 are identical.
Install it using zigup:
zigup 0.14.0-dev.2577+271452d22
Or download it using our pkg.machengine.org mirror:
| OS/Arch | Kind | Download mirror |
|---|---|---|
| Linux x86_64 | Binary | zig-linux-x86_64-0.14.0-dev.2577+271452d22.tar.xz |
| Linux aarch64 (ARM) | Binary | zig-linux-aarch64-0.14.0-dev.2577+271452d22.tar.xz |
| Windows x86_64 | Binary | zig-windows-x86_64-0.14.0-dev.2577+271452d22.zip |
| Windows aarch64 (ARM) | Binary | zig-windows-aarch64-0.14.0-dev.2577+271452d22.zip |
| macOS x86_64 (Intel) | Binary | zig-macos-x86_64-0.14.0-dev.2577+271452d22.tar.xz |
| macOS aarch64 (Apple Silicon) | Binary | zig-macos-aarch64-0.14.0-dev.2577+271452d22.tar.xz |
| Source code | Source | zig-0.14.0-dev.2577+271452d22.tar.xz |
Installation: Download, extract, and place on your system $PATH. Ensure zig version reports the right version.
Signatures: .minisig Download signatures can be retrieved from ziglang.org for all downloads.
2024.10.0-mach
Zig 2024.10.0-mach and 0.14.0-dev.1911+3bf89f55c are identical.
Install it using zigup:
zigup 0.14.0-dev.1911+3bf89f55c
Or download it using our pkg.machengine.org mirror:
| OS/Arch | Kind | Download mirror |
|---|---|---|
| Linux x86_64 | Binary | zig-linux-x86_64-0.14.0-dev.1911+3bf89f55c.tar.xz |
| Linux aarch64 (ARM) | Binary | zig-linux-aarch64-0.14.0-dev.1911+3bf89f55c.tar.xz |
| Windows x86_64 | Binary | zig-windows-x86_64-0.14.0-dev.1911+3bf89f55c.zip |
| Windows aarch64 (ARM) | Binary | zig-windows-aarch64-0.14.0-dev.1911+3bf89f55c.zip |
| macOS x86_64 (Intel) | Binary | zig-macos-x86_64-0.14.0-dev.1911+3bf89f55c.tar.xz |
| macOS aarch64 (Apple Silicon) | Binary | zig-macos-aarch64-0.14.0-dev.1911+3bf89f55c.tar.xz |
| Source code | Source | zig-0.14.0-dev.1911+3bf89f55c.tar.xz |
Installation: Download, extract, and place on your system $PATH. Ensure zig version reports the right version.
Signatures: .minisig Download signatures can be retrieved from ziglang.org for all downloads.
2024.5.0-mach
Zig 2024.5.0-mach and 0.13.0-dev.351+64ef45eb0 are identical.
Install it using zigup:
zigup 0.13.0-dev.351+64ef45eb0
Or download it using our pkg.machengine.org mirror:
| OS/Arch | Kind | Download mirror |
|---|---|---|
| Linux x86_64 | Binary | zig-linux-x86_64-0.13.0-dev.351+64ef45eb0.tar.xz |
| Linux aarch64 (ARM) | Binary | zig-linux-aarch64-0.13.0-dev.351+64ef45eb0.tar.xz |
| Windows x86_64 | Binary | zig-windows-x86_64-0.13.0-dev.351+64ef45eb0.zip |
| Windows aarch64 (ARM) | Binary | zig-windows-aarch64-0.13.0-dev.351+64ef45eb0.zip |
| macOS x86_64 (Intel) | Binary | zig-macos-x86_64-0.13.0-dev.351+64ef45eb0.tar.xz |
| macOS aarch64 (Apple Silicon) | Binary | zig-macos-aarch64-0.13.0-dev.351+64ef45eb0.tar.xz |
| Source code | Source | zig-0.13.0-dev.351+64ef45eb0.tar.xz |
Installation: Download, extract, and place on your system $PATH. Ensure zig version reports the right version.
Signatures: .minisig Download signatures can be retrieved from ziglang.org for all downloads.
2024.3.0-mach
Zig 2024.3.0-mach and 0.12.0-dev.3180+83e578a18 are identical.
Install it using zigup:
zigup 0.12.0-dev.3180+83e578a18
Or download it using our pkg.machengine.org mirror:
| OS/Arch | Kind | Download mirror |
|---|---|---|
| Linux x86_64 | Binary | zig-linux-x86_64-0.12.0-dev.3180+83e578a18.tar.xz |
| Linux aarch64 (ARM) | Binary | zig-linux-aarch64-0.12.0-dev.3180+83e578a18.tar.xz |
| Windows x86_64 | Binary | zig-windows-x86_64-0.12.0-dev.3180+83e578a18.zip |
| Windows aarch64 (ARM) | Binary | zig-windows-aarch64-0.12.0-dev.3180+83e578a18.zip |
| macOS x86_64 (Intel) | Binary | zig-macos-x86_64-0.12.0-dev.3180+83e578a18.tar.xz |
| macOS aarch64 (Apple Silicon) | Binary | zig-macos-aarch64-0.12.0-dev.3180+83e578a18.tar.xz |
| Source code | Source | zig-0.12.0-dev.3180+83e578a18.tar.xz |
Installation: Download, extract, and place on your system $PATH. Ensure zig version reports the right version.
Signatures: .minisig Download signatures can be retrieved from ziglang.org for all downloads.
2024.1.0-mach
Zig 2024.1.0-mach and 0.12.0-dev.2063+804cee3b9 are identical.
Note: The first nominated version ever, this was out-of-band with the schedule due to it.
Install it using zigup:
zigup 0.12.0-dev.2063+804cee3b9
Or download it using our pkg.machengine.org mirror:
| OS/Arch | Kind | Download mirror |
|---|---|---|
| Linux x86_64 | Binary | zig-linux-x86_64-0.12.0-dev.2063+804cee3b9.tar.xz |
| Linux aarch64 (ARM) | Binary | zig-linux-aarch64-0.12.0-dev.2063+804cee3b9.tar.xz |
| Windows x86_64 | Binary | zig-windows-x86_64-0.12.0-dev.2063+804cee3b9.zip |
| Windows aarch64 (ARM) | Binary | zig-windows-aarch64-0.12.0-dev.2063+804cee3b9.zip |
| macOS x86_64 (Intel) | Binary | zig-macos-x86_64-0.12.0-dev.2063+804cee3b9.tar.xz |
| macOS aarch64 (Apple Silicon) | Binary | zig-macos-aarch64-0.12.0-dev.2063+804cee3b9.tar.xz |
| Source code | Source | zig-0.12.0-dev.2063+804cee3b9.tar.xz |
Installation: Download, extract, and place on your system $PATH. Ensure zig version reports the right version.
Signatures: .minisig Download signatures can be retrieved from ziglang.org for all downloads.