Skip to content

ci: bump Zig to 0.14.1 so CI can build (.root_module is a 0.14 API)#1

Open
abhicris wants to merge 1 commit intocryptuon:mainfrom
abhicris:ci/unbreak-zig-version
Open

ci: bump Zig to 0.14.1 so CI can build (.root_module is a 0.14 API)#1
abhicris wants to merge 1 commit intocryptuon:mainfrom
abhicris:ci/unbreak-zig-version

Conversation

@abhicris
Copy link
Copy Markdown

Bug

Every CI run since 2026-04-07 has failed on every matrix cell (test × 3 OSes, build × 3 OSes × 3 optimize modes = 12 jobs) with the exact same error:

build.zig:9:10: error: no field named 'root_module' in struct 'Build.ExecutableOptions'

Sample from the most recent run (24318456000):

  • Test (ubuntu-latest)build.zig:9:10: error: no field named 'root_module' in struct 'Build.ExecutableOptions' → exit 2
  • Test (macos-latest) — same error
  • Test (windows-latest) — same error
  • Build (ubuntu-latest, ReleaseFast/ReleaseSmall/Debug) — same error
  • Build (macos-latest, *) / Build (windows-latest, *) — same error

Root cause

build.zig uses the 0.14 build-system API throughout:

Call 0.14 API used
b.addExecutable(.{ .root_module = b.createModule(...) }) 7 call sites
b.addLibrary(.{ .linkage = ..., .root_module = ... }) 2 call sites
b.addTest(.{ .root_module = b.createModule(...) }) 1 call site

All three of these APIs were introduced in Zig 0.14.0. The .root_module field was added to Build.ExecutableOptions / Build.LibraryOptions / Build.TestOptions as part of the 0.14.0 build-system unification (replacing the old root_source_file / addSharedLibrary / addStaticLibrary family).

.github/workflows/ci.yml pins ZIG_VERSION: "0.13.0", which doesn't know about root_module. The toolchain rejects build.zig on line 9 before anything can build.

Fix

One-line change: bump ZIG_VERSION in .github/workflows/ci.yml from "0.13.0""0.14.1" (latest 0.14.x patch, final 0.14 release). Added a comment above the pin explaining why 0.14 specifically so future bumps don't accidentally regress to 0.13.

No source files touched. build.zig already targets 0.14; this PR just makes the CI toolchain match.

Why not bump to 0.15?

  • 0.15 introduced further build-system breaking changes (notably addModule replacing some createModule patterns). Bumping past the matching major would require editing build.zig to match. Keeping the bump to 0.14.1 minimizes the blast radius — the same API build.zig already targets.
  • If the repo wants to move to 0.15+ later, that's a separate follow-up PR with the build.zig migration bundled together.

Verification

Cannot verify locally (no 0.14.1 toolchain on this box), but the fix is mechanical: build.zig uses 0.14 API, so the toolchain has to be 0.14.x. This PR's own CI run will demonstrate — once GitHub picks it up, all 12 matrix cells that were failing on 0.13 should now proceed past build.zig parsing.

kcolbchain / Abhishek Krishna

Every CI run has failed since 2026-04-07 with the same error on all
six matrix cells:

    build.zig:9:10: error: no field named 'root_module' in struct
                           'Build.ExecutableOptions'

`build.zig` uses the 0.14 build-system API throughout — `b.addExecutable(.{
.root_module = b.createModule(...) })`, `b.addLibrary`, `b.addTest(.{
.root_module = ... })` — but `.github/workflows/ci.yml` pins the toolchain
to 0.13.0, which doesn't know about the `root_module` field.

Bumping `ZIG_VERSION` from "0.13.0" to "0.14.1" (latest 0.14 patch) lets
the existing build.zig compile without touching any source. No other
edits required.

— [kcolbchain](https://kcolbchain.com) / [Abhishek Krishna](https://abhishekkrishna.com)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant