build: migrate Architect to Zig 0.16.0 - #376
Merged
Merged
Conversation
ghostty moves to a main-branch commit because 1.3.2-dev is the first line requiring 0.16.0 and no v1.3.2 tag exists yet; libxev follows ghostty's pin; zig-toml moves to its zig-0.16 branch. zwanzig v0.15.1 already supports 0.16.0 through its compat layer and needs no version change. src/ does not compile yet; the following commits on this branch complete the migration.
env, clock, and proc now take the io context that Zig 0.16 requires.
Keep the Darwin-only workaround because Task 1 could not verify arm64e SDK linking from the Linux sandbox.
Manual app verification is unavailable in the Linux sandbox without a display or macOS SDK environment.
Refresh the pinned zig-overlay revision (flake.lock) so Zig 0.16.0 is resolvable at all. Rewrite macos_input_source.zig's Carbon/CoreFoundation/ objc bindings as hand-written externs instead of @cImport, since Zig 0.16's Aro-based translate-c can't resolve nested framework headers or parse ImageIO's Blocks syntax that Carbon.h and CoreFoundation.h pull in transitively. Restore the two removed-API calls in runtime.zig's quit-teardown path (posix.write/posix.openZ), invisible to every prior Linux-sandbox build because that code is only reachable through a comptime-pruned macOS-only branch. Fix a startup panic in the control and notify socket accept loops: std.Io.net.Server.accept treats EAGAIN on a non-blocking listening socket as a programmer bug and panics, so both loops now call a hand-rolled posix_util.accept (mirroring Zig 0.15.2's own std.posix.accept) to restore the pre-migration non-blocking poll design. All four issues were invisible to the migration's 15 Linux-sandbox tasks and their reviews; they surfaced only once the branch was built and actually run on a real macOS host.
forketyfork
marked this pull request as ready for review
September 1, 2026 12:44
1 task
forketyfork
added a commit
that referenced
this pull request
Sep 1, 2026
…#377) Issue: after merging the Zig 0.16.0 migration (#376), the Homebrew formula still pinned zig@0.15 as a build dependency, a startup script comment still blamed a proxy quirk on "Zig 0.15's HTTP client", and the Zig 0.16 package fetch cache (zig-pkg/) had no .gitignore entry and was showing up untracked. Solution: bump the formula's zig dependency to zig@0.16 (Homebrew's alias for the current 0.16.0 mainline formula, mirroring how @0.15 was pinned before), de-version the startup script comment since there's no evidence the proxy issue is version-specific, and ignore zig-pkg/ alongside the other Zig cache directories already listed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
Architect must move from Zig 0.15.2 to Zig 0.16.0, including the dependency pins and build-script APIs that gate the migration.
Solution
This PR spans Tasks 6-15 of the Zig 0.16.0 migration plan. Task 6 flips the flake toolchain pin and minimum Zig version, updates the four verified dependency hashes, renames the build graph environment map, and migrates build.zig SDK probing to std.Io and std.process.run.
Context
CI is EXPECTED TO FAIL from this commit through Task 12, by design, because the codebase cannot build on both toolchains simultaneously mid-flip. The true green gate is Task 13. The remaining commits on this branch will complete Tasks 7-15 before this PR is merged.
Test plan