ReviewOS

zig-utils/zig-js

WebAssembly GC: pinned corpus, recursive types, and validation

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

Parent: #267\nDepends on: #262\nRoadmap: #142, #134\n\nPin the selected finished Wasm GC proposal and implement its type-system and validation surface.\n\nAcceptance:\n- [x] Check in exact revision, dependency, opcode/type, file, and command inventories with no implicit proposal drift.\n- [x] Decode recursive/subtype groups, heap/reference types, structs, arrays, casts/tests, and related instructions behind the GC gate.\n- [x] Validate canonical type identity, subtyping, nullability, field mutability, packed storage, instruction stacks, and disabled features exactly.\n- [x] Add malformed/invalid, recursion-depth, allocation-failure, and deterministic-diagnostic witnesses plus drift verification.

9 days ago

Inventory checkpoint pushed in 9e064f7 and documented in the README/docs. The exact GC target is now locked to 756060f and corpus tree 9775532, with five normative document hashes, all type encodings, all 33 instruction encodings, and all 18 dedicated files / 698 top-level commands. The drift verifier is green. This is explicitly an inventory, not a pass score; recursive type decoding and validation remain active in this issue.

9 days ago

Completed and pushed to main.

Implementation checkpoints:

  • 9e064f7: exact proposal/corpus/document/opcode/type inventory
  • c94c30d: recursive type-group decoding and lossless GC type IR
  • 99ce0c8: complete 33-instruction binary surface and immediates
  • 56c72a9: canonical iso-recursive identity, subtyping, nullability, variance/mutability, packed storage, all aggregate/scalar/cast instruction stacks, legal recursive-group visibility, and allocation-failure handling
  • 269d6e8: current README and detailed Wasm documentation

Final evidence:

  • focused GC validation: 8/8
  • complete validator regression root: 93/93
  • allocation-failure rollback witness: clean
  • 512-level subtype-chain witness: clean
  • feature drift verifier: 4 profiles / 12 pinned features
  • docs build: 30 pages

This completes the binary/type/validation boundary only. Runtime objects and precise tracing remain explicitly in #299, and terminal corpus scoring remains in #300.

Sign in to comment on this issue.