ReviewOS

zig-utils/zig-js

WebAssembly profiles: exceptions and tail calls

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

Parent: #142 Depends on: #262 Roadmap: #134

Implement pinned exception-handling and tail-call profiles with exact JS/Wasm boundaries.

Acceptance:

  • Pin exact proposal revisions and opcode/type inventories.
  • Implement decoding, validation, execution, traps/unwinding, tags/exceptions, and tail-call stack behavior.
  • Preserve JavaScript exception identity and WebAssembly exception typing across imports/exports.
  • Keep tail calls stack bounded and compatible with precise GC roots.
  • Publish upstream profile totals with no hidden exclusions.

Child issue map

  • #288 — tail-call opcode/file inventory, decoding, and validation
  • #289 — bounded tail-call execution frames and precise GC roots
  • #290 — exception tags, binary IR, validation, and core unwinding
  • #291 — JavaScript Tag/Exception API and cross-boundary identity
  • #292 — exact upstream corpora, bounded CI, host matrix, and terminal evidence

Implementation order

#288 precedes #289, and #290 precedes #291. The tail-call and exception tracks may proceed independently once their inventories lock the exact pinned revisions. #292 closes only after all four implementation slices are complete and every declared upstream command has an explicit execution mode and result.

9 days ago

Tail-call binary/validation (#288) and bounded execution/root safety (#289) are complete. The remaining tail work is terminal proposal-corpus scoring in #292; exception implementation proceeds through #290 and #291.

9 days ago

Core exception handling child #290 is complete through e16c4f6: exact inventory, tags, modern IR/validation, typed unwinding, precise roots, allocation rollback, deep nesting, and normal/TSan evidence. Parent completion still correctly waits on #291 for the JavaScript identity boundary and #292 for exact proposal corpus totals/CI.

9 days ago

#291 is complete: the pinned JavaScript Tag/Exception API, JS/Wasm identity transport, precise-GC ownership, failure teardown, and equivalent JSC differential are now implemented and documented. The only remaining child is #292, which owns exact no-hidden-filter corpus totals and terminal host/sanitizer evidence.

9 days ago

All five child slices are complete. The final #292 inventories account for all 205 declared exception/tail-call commands with 192 public-API passes, 13 explicit text-parser N/A results, and no failures or runner errors. README and WebAssembly status now publish the exact totals, pins, reproduction, host boundary, sanitizer evidence, and JSC comparison.

Sign in to comment on this issue.