You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
lib/JIT/Builtin/StringGetenvAll.php still inlines ~100 lines of libc environ walk via JitEnvironMirrorKernel::mirrorIntoHashtablePtr into __compiler_getenv_all, even though EnvironMirrorRuntime already routes the same mirror through NestedJIT EnvironMirrorNativeJitHelper for $_SERVER refresh (#18984 / #19157).
Comment in-tree claims NestedJIT is empty under HELPER_RUNTIME_O=0, but JitSuperglobalRefreshKernel already uses EnvironMirrorRuntime::emitFillCall on the thin-standalone path.
What landed:StringGetenvAll no longer inlines JitEnvironMirrorKernel; thin AOT uses shared EnvironMirrorRuntime ABI with libc kernel body; embed keeps NestedJIT helper.
Activity
PurHur commentedon Jul 20, 2026
claim: PHP Runtime → PHP — starting this run
Pillar 1 probes (this workspace):
bootstrap-inventory --check→ OK 6197/6197release-readiness --json→user_release_ready: yes(inventory, spine, root-readme, north-star5-fast, vm-driver-probe all ok)Migrating
StringGetenvAlloff inlineJitEnvironMirrorKernelontoEnvironMirrorRuntime::emitFillCall(peer #18984 / #19215).PurHur commentedon Jul 20, 2026
Blocker (php-src-strict AOT) — not merging this run
Attempted
StringGetenvAll→EnvironMirrorRuntime::ensureLinked+__superglobals__mirror_process_environABI call (same shape as $_SERVER refresh).Evidence
Commands:
Unit shrink tests green; VM
getenv()ok; AOT zero-arg getenv() returns empty array — NestedJITEnvironMirrorNativeJitHelper/phpc_native_environ_mirror_into_htleaf does not populate a freshly allocated HT under thin standalone AOT (matches in-tree warning about NestedJIT empty underHELPER_RUNTIME_O=0, #20758 / #19157).Next step
Either:
__hashtable__*fill matches libc walk (then resume php-in-php: StringGetenvAll drop JitEnvironMirrorKernel inline — EnvironMirrorRuntime + EnvironMirrorNativeJitHelper (#1492) #21579), orJitEnvironMirrorKernelforgetenv_alluntil (1) is green — do not route getenv_all throughEnvironMirrorRuntimeyet.Releasing claim for this run; not pushing a regressing AOT change.
php-in-php: getenv_all shares EnvironMirrorRuntime thin kernel ABI (#…
PurHur commentedon Jul 20, 2026
Merged #21585
What landed:
StringGetenvAllno longer inlinesJitEnvironMirrorKernel; thin AOT uses sharedEnvironMirrorRuntimeABI with libc kernel body; embed keeps NestedJIT helper.Verification
make bootstrap-selfhost-vm-driver-execute-probeOKFull
JitEnvironMirrorKerneldelete remains blocked (NestedJIT/procempty — see #21580).