Parent: #1
Related: #15, #49
Problem
A preserved pre-rewrite experiment identified a valid invariant gap that remains in the current allocator architecture. Under parallel_gc, arena chunk refills are serialized by LockedArena and GC slab refills are serialized by GcCellBacking, but those are independent locks and both ultimately call the embedder-provided std.mem.Allocator. Zig allocators do not universally promise concurrent safety. Two no-GIL mutators can therefore enter a non-thread-safe embedder allocator concurrently even though each engine subsystem is internally locked.
The stale experiment itself cannot be applied: it targets the removed GC layout and points zig_gc at a deleted marker worktree. This issue tracks a clean adaptation to current main.
Acceptance criteria
Parent: #1
Related: #15, #49
Problem
A preserved pre-rewrite experiment identified a valid invariant gap that remains in the current allocator architecture. Under
parallel_gc, arena chunk refills are serialized byLockedArenaand GC slab refills are serialized byGcCellBacking, but those are independent locks and both ultimately call the embedder-providedstd.mem.Allocator. Zig allocators do not universally promise concurrent safety. Two no-GIL mutators can therefore enter a non-thread-safe embedder allocator concurrently even though each engine subsystem is internally locked.The stale experiment itself cannot be applied: it targets the removed GC layout and points
zig_gcat a deleted marker worktree. This issue tracks a clean adaptation to current main.Acceptance criteria