Parent: #140
Profiles: #163, #164
Roadmap: #134
Pinned consumer: oven-sh/bun@4982b91e3702094330f3be3883354c52b8c01323
Pinned references: src/jsc/bindings/ZigGlobalObject.cpp:JSCInitialize, src/jsc/bindings/bindings.cpp:JSC__VM__notifyNeedShellTimeoutCheck
Implement the remaining private process-initialization boundary and the distinct shell-timeout VM trap as real engine state, not inert compatibility exports.
Acceptance:
- Implement thread-safe, exactly-once
JSCInitialize(env, count, callback, eval_mode, one_shot_startup)with first-call-wins configuration. - Inspect exactly
countnullable sentinel-terminated C-string slots (the pinned ABI precondition), parseBUN_JSC_entries, and report every unsupported/invalid option through the exact callback slice. - Apply supported JIT, WebAssembly, SharedArrayBuffer, and ShadowRealm policy to subsequent private VMs; retain eval/one-shot process policy, whose concurrent optimizing-JIT/GC-helper effects are vacuous in zig-js, while explicit specialized context options remain authoritative.
- Make repeated and concurrent initialization calls inert after the winner, without retaining caller memory or invoking later callbacks.
- Implement
JSC__VM__notifyNeedShellTimeoutCheckas a thread-safe trap distinct from termination, watchdog, and debugger-break state; consume it at the next execution checkpoint. - Define the pinned private ABI handle contract: null is inert, each valid live VM targets only its own group, and foreign/stale non-null pointers remain caller UB like the upstream raw-pointer ABI.
- Add independent Home/Bun ABI fixtures plus focused Debug, ReleaseSafe, and TSan coverage.
- Pin exact source/semantic contracts, promote both symbols in both inventories, refresh concise docs/README counts, and reconcile exact main CI.