Parent: #336 Related: #334, #337, #351, #355 Roadmap: #144, #134
The newly added C compaction extension currently returns bool, conflating unsupported execution states, an already-dense heap, planning OOM, and successful movement. Backward compatibility is not a constraint before stabilization, so make the boundary exact now.
Scope
- Define a public extension status enum for unsupported, no-candidates, out-of-memory, and compacted.
- Return the exact status from ZJSContextCompactGarbage.
- Expose optional moved-cell and moved-byte outputs, initialized deterministically for every status.
- Update C, Objective-C, docs, inventories, and callback/quiescent tests.
Acceptance
- Native callback/JIT/invalid contexts report unsupported explicitly.
- Dense heaps report no-candidates rather than generic failure.
- Successful movement reports compacted with nonzero exact metrics.
- OOM remains distinguishable and output values are deterministic.
- C/Objective-C embedding audits and focused sanitizer configurations pass.