ReviewOS

zig-utils/zig-js

GC relocation: rewrite Environment binding graphs

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

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

Complete Environment relocation before enabling any cell movement.

Acceptance:

  • Rewrite every managed Value in vars, disposables, and dispose_pending.
  • Rewrite every live alias Environment, object_proto_intrinsic, parent Environment, and with_object.
  • Preserve binding names, declaration sets, allocator/accounting metadata, and arena ownership.
  • Relocation runs only at the world-stopped commit boundary and does not acquire binding_lock.
  • Distinct-target regressions prove every slot.
  • 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 b76acb13.

Delivered:

  • relocateEnv rewrites every binding Value, disposable value/method, pending disposal value, live alias Environment, realm prototype, parent Environment, and with object;
  • binding names, declaration metadata, allocator/accounting fields, and arena-owned containers remain stable;
  • relocation is explicitly world-stopped and does not acquire binding_lock;
  • distinct-target regression proves every managed slot while preserving alias/name metadata.

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.