Milestone
M4 (bootstrap loop) — parent #1492. Follow-up to closed #2843.
Problem
make bootstrap-loop-probe is green (May 2026 harness), but script/bootstrap-loop-gen1-link.sh still links gen-1 native emit via a separate sidecar TU by default:
m4_link_mode="selfhost M3 emit TU (compile_smoke_m3_emit_native_entry.php)"
HelloWorld strict and BOOTSTRAP_M3_USE_INVENTORY_EMIT_DRIVER=1 already prove compile_driver.php-only native emit (#2843). Gen-2→gen-3 spine uses build/bin-compile-aot argv -o (#2697).
The gen-1 slice should match: one honest compile spine, no parallel emit-helper link for routine M4.
Scope
| Path |
Change |
script/bootstrap-loop-gen1-link.sh |
Default BOOTSTRAP_M3_USE_INVENTORY_EMIT_DRIVER=1 / PHP_COMPILER_M3_INVENTORY_EMIT_DRIVER=1; drop compile_smoke_m3_emit_native_entry.php from default path |
test/selfhost/bootstrap_loop_smoke/compile_driver.php |
Inventory emit entry for gen-2 smoke |
lib/JIT.php |
Any deny-list gaps for loop bundle emit |
docs/bootstrap-selfhost.md |
Gate row: gen-1 emit via inventory driver |
Keep emit-helper TU behind explicit bisect env only (BOOTSTRAP_M3_EMIT_HELPER_TU=1).
Repro
grep -n compile_smoke_m3_emit_native_entry script/bootstrap-loop-gen1-link.sh
# default path still references emit-helper TU
# Green with inventory driver (opt-in today):
./script/docker-exec.sh -- bash -lc '
export PHP_COMPILER_LLVM_PATH=/opt/llvm9 LD_LIBRARY_PATH=/opt/llvm9
source script/php-env.sh
BOOTSTRAP_M3_USE_INVENTORY_EMIT_DRIVER=1 make bootstrap-loop-gen1-link
'
Done when
Labels
self-host, bootstrap, IMPORTANT
Links
#1492 · #2843 · #1498
Milestone
M4 (bootstrap loop) — parent #1492. Follow-up to closed #2843.
Problem
make bootstrap-loop-probeis green (May 2026 harness), butscript/bootstrap-loop-gen1-link.shstill links gen-1 native emit via a separate sidecar TU by default:HelloWorld strict and
BOOTSTRAP_M3_USE_INVENTORY_EMIT_DRIVER=1already provecompile_driver.php-only native emit (#2843). Gen-2→gen-3 spine usesbuild/bin-compile-aotargv-o(#2697).The gen-1 slice should match: one honest compile spine, no parallel emit-helper link for routine M4.
Scope
script/bootstrap-loop-gen1-link.shBOOTSTRAP_M3_USE_INVENTORY_EMIT_DRIVER=1/PHP_COMPILER_M3_INVENTORY_EMIT_DRIVER=1; dropcompile_smoke_m3_emit_native_entry.phpfrom default pathtest/selfhost/bootstrap_loop_smoke/compile_driver.phplib/JIT.phpdocs/bootstrap-selfhost.mdKeep emit-helper TU behind explicit bisect env only (
BOOTSTRAP_M3_EMIT_HELPER_TU=1).Repro
Done when
make bootstrap-loop-gen1-linkuses inventorycompile_driver.phponly (no*_m3_emit_native_entry.phplink)make bootstrap-loop-probestays greenLabels
self-host,bootstrap,IMPORTANTLinks
#1492 · #2843 · #1498