Skip to content

feat(zig): pin zig 0.15.2 via mise and wire taskfile + CI job - #47

Merged
pythoninthegrass merged 2 commits into
mainfrom
task-355.1
Sep 11, 2026
Merged

pythoninthegrass merged 2 commits into
mainfrom
task-355.1

Conversation

@pythoninthegrass

Copy link
Copy Markdown
Collaborator

Summary

  • Pin zig 0.15.2 in .tool-versions, resolved via mise which zig --tool zig@<pinned> since PATH may hold an IDE-bundled zig or a mise default for a different version
  • Add taskfiles/zig.yml (format, lint, test, build, cross-compile, clean), each gated by an internal _check-zig-version task that fails with an actionable expected/found/fix message
  • Wire zig:lint/zig:format/zig:test into the root lint/format/test tasks
  • Add a standalone zig CI job on a Blacksmith Linux runner (.github/workflows/test.yml), cached on zig-core/.zig-cache/zig-out, and deliberately absent from every other job's needs: so it cannot extend the critical path
  • Add a minimal placeholder zig-core/ (executable + one test) — no SQLite/HTTP logic; that's TASK-355.2

Notes

  • AC#6 (cold vs warm cache timing) needs two real runs of the zig job on GitHub Actions and can't be measured from a worktree — left unchecked on TASK-355.1 with instructions to record it after this merges.
  • This repo previously had a full Zig FFI integration (removed in fb22c40 after SIGBUS crashes under concurrent tokio execution) — an unrelated architecture (static-lib FFI vs. this HTTP-sidecar POC), but worth knowing about for TASK-355.2+.

Test plan

  • task zig:format / zig:lint / zig:test / zig:build all pass locally against the placeholder zig-core/
  • task zig:cross-compile fails with an actionable message when TARGET is unset, succeeds for aarch64-macos/x86_64-macos/x86_64-linux/x86_64-windows
  • AC#3 exercised for all three failure modes (zig missing, version mismatch, mise missing)
  • actionlint .github/workflows/test.yml clean
  • Cold/warm cache timing for the new zig CI job (AC#6) — to be recorded after this merges

Add a mise-managed Zig toolchain for the sidecar core. zig is resolved
with `mise which zig --tool zig@<pinned>` instead of PATH, since PATH may
hold an IDE-bundled zig or a mise default for another version.

- .tool-versions: pin zig 0.15.2
- taskfiles/zig.yml: format, lint, test, build, clean and a TARGET-driven
  cross-compile task, each behind an internal _check-zig-version task that
  fails with the expected/found version and the mise fix
- taskfile.yml: include zig and call zig:lint/format/test from the root
  aggregate tasks (root build stays Tauri-only)
- zig-core/: placeholder executable plus one unit test; the vendored
  SQLite binding lands in TASK-355.2
- .github/workflows/test.yml: standalone zig job on a Blacksmith Linux
  runner, caching zig-core/.zig-cache and zig-core/zig-out, absent from
  every other job's needs so it cannot extend the critical path
The zig CI job used arduino/setup-task, inconsistent with the
go-task/setup-task action already relied on elsewhere in this repo
(.github/actions/setup-tauri-build/action.yml).
@pythoninthegrass
pythoninthegrass merged commit 07abd9d into main Sep 11, 2026
5 of 8 checks passed
@pythoninthegrass
pythoninthegrass deleted the task-355.1 branch September 11, 2026 20:44
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