ReviewOS

zig-utils/zig-js

Build: support current Zig 0.17.0-dev stdlib API changes

#626
Closed chris opened this 9 days ago ·
9 days ago

Parents: #494, #500 Dependency: zig-utils/zig-regex#21 Related: #625

Problem

GitHub Actions now installs Zig 0.17.0-dev.1811. The current tree compiles locally with 0.17.0-dev.1441, but CI fails every build-based job with seven compile errors:

  • three std.ArrayListUnmanaged.getLast calls in FnScope after that convenience API was removed;
  • three cached Matcher.findFrom calls that exceed the newer one-level implicit pointer-dereference rule;
  • one owned zig-regex getLast call tracked by zig-utils/zig-regex#21.

Authoritative run: https://github.com/zig-utils/zig-js/actions/runs/32258993747

Scope

  • Express the lexical-scope non-empty invariant through explicit final-item access.
  • Explicitly dereference cached matcher pointers at the three findFrom call sites without changing matcher ownership or reuse.
  • Land the sibling regex compatibility fix first, then validate the integrated repository.
  • Preserve compatibility with the documented Zig 0.17 development floor; do not pin CI backward or hide failures.

No-workaround rules

  • No CI version rollback, conditional source fork by compiler version, disabled job, vendored stdlib shim, or reduced test matrix.

Acceptance

  • All seven reported compile errors are eliminated on Zig 0.17.0-dev.1811.
  • Focused compiler and RegExp tests pass on both the local supported compiler and dev.1811.
  • Full local parallel units pass with no leaks.
  • Dependency audit stays exact.
  • A new main CI run reaches runtime gates instead of failing compilation.
9 days ago

Dependency progress: zig-regex@87e9ca2 is now on its main, and zig-regex#21 is closed after its complete suite passed on both dev.1441 and the exact CI dev.1811 compiler.

Integrated validation so far: the full zig-js unit artifact compiles on 0.17.0-dev.1811+6716bf52e, and zig build test -Dtest-filter=compiler passes 71/71. This clears all seven compiler diagnostics observed in CI. RegExp-focused and full parallel unit validation remain before landing the zig-js commit.

9 days ago

Landed on main in d46ed71e, paired with zig-regex@87e9ca2.

Final validation:

  • exact CI Zig 0.17.0-dev.1811+6716bf52e: compiler filter 71/71; RegExp filter 21/21
  • local Zig dev.1441: test-parallel 1,738 passed, 1 skipped, 0 failed, 0 leaked
  • dependency audit: 15 classified edges, 0 migration targets, 60 classified repository tools
  • Test262 not run; this commit claims no conformance flips

The push has triggered a new main CI run for repository-wide confirmation.

9 days ago

Reopened after the next CI run resolved zig@0.17.0-dev to 0.17.0-dev.1818+7051f8e73. The dev.1811 fixes removed the compiler stack errors, but dev.1818 tightened method-call adjustment again: the three cached matcher calls now need fully qualified invocation. CI also correctly revealed that all workflow jobs still pin zig-regex@2de4668, so the landed dependency fix was not consumed.

Follow-up scope is exact: use Regex.Matcher.findFrom(matcher, ...) to avoid implicit pointer adjustment on both dev.1441/dev.1811/dev.1818, and advance every audited CI zig-regex checkout to 87e9ca2. No JS semantics or job/queue surfaces are involved.

9 days ago

Final dev.1818 follow-up landed on main in 6cb02043.

This closes the gap exposed by CI run 32336603425:

  • all three cached matcher calls use fully qualified receiver invocation;
  • seven CI plus one performance workflow now consume zig-regex@87e9ca2;
  • dependency inventory pins match those eight checkout sites.

Final local evidence: dev.1818 compiler 71/71 and RegExp 21/21; dev.1441 RegExp 21/21; full parallel units 1,738 pass / 1 skip / 0 fail / 0 leak; dependency audit 15 edges / 0 migrations / 60 tools. A fresh main CI run is now queued.

9 days ago

Reopened for the Linux-specific dev.1818 link edge from fresh CI run 32337623853. Source compilation now succeeds; the remaining four diagnostics are duplicate linker references to __register_frame / __deregister_frame from jit.gdb_jit, which macOS does not exercise. I am tracing the owned unwind-provider link contract now. This is separate from the matcher/zig-regex fixes and will be validated on Linux before the next push.

9 days ago

Linux dev.1818 linker follow-up landed in 6557c9bd.

The x86_64-linux unit artifact now links without __register_frame, __deregister_frame, or _Unwind_Find_FDE references. The supported Mach-O path remains exact: publication-filter tests pass 31/31 on both dev.1818 and dev.1441, including dynamic FDE registration/retirement and concurrent descriptor publication. Full local units pass 1,738 / 1 skip / 0 fail / 0 leak; dependency audit remains clean.

A new main CI run will confirm Linux execution across the complete matrix.

Sign in to comment on this issue.