Skip to content

Commit 2d9944f

Browse files
committed
ci(chapel): unblock Compile Chapel Metalayer + Build & Test Zig FFI Bridge
Chapel-CI has been red on every push since the workflow + sources were authored (commit e44815a, 2026-04-20) — zero successful runs in the 100-run history. Two independent pre-existing breakages: ## Job 1: `Compile Chapel Metalayer` — `extern "C" { ... }` parse error `chapel_ffi_exports.chpl` wrapped its 35 prover-id / category-id `c_int` constants in a single `extern "C" { ... }` block. That syntax is the Chapel "extern blocks" feature, which requires the Chapel compiler to be built with LLVM + clang headers available. The official `chapel-2.3.0-1.ubuntu24.amd64.deb` the workflow installs is not built with that combination — so the parser bails at line 29: chapel_ffi_exports.chpl:29: syntax error: near '{' … parallel_proof_search.chpl:186: syntax error: near 'proc' (cascade) The constants are also `#define`d on the C side in `src/zig_ffi/chapel_ffi_exports.h` — that is the canonical copy any non-Chapel consumer reads. The Chapel copy only needs to be visible to Chapel code; emitting it as a C-visible symbol via an `extern` block is unnecessary. Dropping the wrapper and keeping the 35 declarations as plain module-level `const`s fixes the parse without losing any contract. (Documented in-place; the comment block above the constants points to the C header as the source of truth.) ## Job 2: `Build & Test Zig FFI Bridge` — Zig 0.14 API on 0.13 install `src/zig_ffi/build.zig` line 1 already documents `// Compatible with Zig 0.14+/0.15+`. Lines 23, 52, 74 use `b.addLibrary(.{ ... .linkage = … })` which is the 0.14+ unified `Build.addLibrary` API; Zig 0.13 only exposes the older `addSharedLibrary` / `addStaticLibrary`. The workflow pinned `mlugg/setup-zig@… with: version: 0.13.0` for both `zig-ffi` and `rust-chapel-real` jobs, so every run hit: build.zig:23:18: error: no field or member function named 'addLibrary' in 'Build' Bumping both pins to `0.14.0` matches what the source already declares. ## Effect Both jobs should compile on this branch. `rust-chapel-feature` (Job 3) was previously skipped via the `needs: zig-ffi` dependency — with Job 2 green, Job 3 actually runs. Job 4 (`rust-chapel-real`) is `continue-on-error: true` so its outcome stays advisory. Surfaced during the 2026-05-30 dependabot-deadlock triage as one of the orthogonal failures on PR #128. None of these jobs are required checks, so this PR doesn't unblock anything blocking the merge queue — it just makes Chapel L2.1 actually verifiable on CI for the first time, which matters as L2.2-L2.7 land. Refs: handover/TODO.md P3 "L2.1 ✅ Done" — the "done" status was based on local builds; CI verification has been broken from day 1.
1 parent 4920e04 commit 2d9944f

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

.github/workflows/chapel-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
- name: Install Zig
8787
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
8888
with:
89-
version: 0.13.0
89+
version: 0.14.0
9090

9191
- name: Build Zig FFI library (with Chapel stubs)
9292
run: cd src/zig_ffi && zig build -Doptimize=ReleaseSafe
@@ -151,7 +151,7 @@ jobs:
151151
- name: Install Zig
152152
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
153153
with:
154-
version: 0.13.0
154+
version: 0.14.0
155155

156156
- name: Install Rust
157157
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable

0 commit comments

Comments
 (0)