ReviewOS

zig-utils/zig-js

GC relocation: rewrite Promise and reaction graphs

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

Parent: #335 Depends on: #341 Roadmap: #144, #134

Complete Promise relocation without changing settlement or locking semantics.

Acceptance:

  • Rewrite Promise value, wrapper, awaiting activation, forwarding Promise, and every inline/overflow reaction.
  • Rewrite handler/extra argument/retained activation and the result-Promise or resolve/reject capability branch exactly as traced.
  • Preserve detached-reaction semantics and Promise state/accounting metadata.
  • Relocation runs only at the world-stopped commit boundary and does not acquire Promise locks.
  • Distinct-target regressions prove inline and overflow branches.
  • Focused normal and TSan runs report zero failures and leaks.
  • Production movement remains disabled and #335 is updated.
9 days ago

Implemented and pushed in 8bacc09f.

Delivered:

  • Promise value, wrapper, awaiting activation, forwarding Promise, inline reactions, and overflow reaction buffers all rewrite precisely;
  • each reaction rewrites handler/extra/retained activation, then preserves the tracer-aligned result-Promise versus resolve/reject branch;
  • relocation is explicitly world-stopped and takes no Promise state lock;
  • distinct-target regression covers both storage forms and both capability branches.

Local gates:

  • filtered normal: 3/3 passed, 0 failed, 0 leaked;
  • filtered TSan: 3/3 passed, 0 failed, 0 leaked.

Production movement remains disabled. Keeping this open only for descendant full GitHub Actions evidence.

9 days ago

Completed and accepted. The implementation-specific local evidence is recorded above, and descendant full CI at https://github.com/zig-utils/zig-js/actions/runs/29716788619 completed with 42 successful jobs, one intentional nightly skip, zero failures, and zero cancellations.

Sign in to comment on this issue.