Exact main run 29803416991 exposed a no-GIL TSan race between ordinary shared TypedArray writes and the copy performed by relocating WebAssembly Memory.grow. Relocating growth now observes shared bytes through synchronized semantics while preserving old aliases and leaving exclusive non-shared paths unchanged.
Acceptance
- Define a per-memory synchronization contract without reintroducing the JS GIL.
- Make relocation race-free while preserving exact contents and historical aliases.
- Keep exclusive ArrayBuffer and Wasm memory paths unchanged.
- Preserve detach, generation, and publication ordering.
- Pass the focused overlap case repeatedly under TSan plus Debug and ReleaseSafe semantics.
- Add a regression covering contents, lengths, historical aliases, and teardown.
- Reconcile an unsuperseded exact main run.
Completed by 7ed9d280; exact-main run 29806223245 passed 43/43 jobs.