Skip to content

feat: support incremental Zig compilation with persistent workers - #689

Draft
cerisier wants to merge 38 commits into
mainfrom
cerisier/zig-incremental-prototype
Draft

cerisier wants to merge 38 commits into
mainfrom
cerisier/zig-incremental-prototype

Conversation

@cerisier

@cerisier cerisier commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

Repeated Bazel builds currently discard Zig's in-memory compilation state. Add opt-in incremental compilation through persistent workers so source edits can reuse that state while Bazel continues to own action inputs and published outputs. Ordinary compilation remains the default.

Supports binaries, tests, static and shared libraries, auxiliary compiler outputs, and the existing separate C/C++ linking route. Workers retain bounded compiler sessions and support worker sandboxing, including hardened Linux sandboxes.

This is experimental support for hermetic Zig 0.17.x and x86_64 Linux targets. Unsupported configurations fail explicitly. Known upstream compiler limitations include stale native inputs with direct Zig linking and malformed unwind data from the native backend. Backend selection remains explicit; downstream compiler workarounds are outside this PR.

Allow the existing emission attributes in incremental mode, including static libraries without a binary. Describe requested files explicitly so ordinary emission and worker requests share output selection, and publish every requested compiler artifact.
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