Category
bootstrap — M3 helloworld self-host gate (blocks #1492 ladder)
Problem
make bootstrap-selfhost-helloworld fails while AOT-linking the inventory compile_driver emit helper. Runtime::parseAndCompile() aborts with Unknown type encountered on both compile_driver.php and main.php in the helloworld smoke tree.
php-src reference
N/A — compile-pipeline / type-lowering gap during self-host AOT (not Zend runtime parity).
Repro
# Full gate (Docker, ~minutes):
./script/docker-exec.sh -- bash -lc 'make bootstrap-selfhost-helloworld'
# Observed failure (2026-06-17):
# parseAndCompile failure: target=/compiler/test/selfhost/compiler_helloworld_smoke/compile_driver.php: Unknown type encountered
# parseAndCompile failure: target=/compiler/test/selfhost/compiler_helloworld_smoke/main.php: Unknown type encountered
# make: *** [Makefile:355: bootstrap-selfhost-helloworld] Error 1
# Link-only step (faster triage):
./script/docker-exec.sh -- bash -lc '
BOOTSTRAP_M3_LINK_COMPILE_DRIVER=1 \
BOOTSTRAP_M3_COMPILE_DRIVER_REAL_LOWERING=1 \
BOOTSTRAP_M3_RUNTIME_COMPILE=1 \
BOOTSTRAP_M3_HELLOWORLD_STRICT=1 \
./script/bootstrap-selfhost-helloworld-probe.sh
'
# Prerequisite check — link stage passes, helloworld fails:
./script/docker-exec.sh -- bash -lc 'make bootstrap-selfhost-link'
Shrink goal: bisect compile_driver.php / main.php with bin/compile.php or bin/vm.php -l until a minimal -r snippet triggers the same Unknown type encountered without the full helloworld Makefile.
Scope (this repo)
| Path |
Work |
test/selfhost/compiler_helloworld_smoke/compile_driver.php |
Failing compile unit |
test/selfhost/compiler_helloworld_smoke/main.php |
Secondary failure |
lib/Runtime.php |
Runtime::parseAndCompile() type dispatch |
lib/Compiler.php |
Type lowering gap surfacing as "Unknown type encountered" |
lib/JIT.php |
AOT emit of inventory compile driver |
Done when
Related
Notes
make bootstrap-selfhost-link: OK (link stage alone passes)
- Fails specifically on helloworld probe emit-helper link with real lowering enabled
Category
bootstrap— M3 helloworld self-host gate (blocks #1492 ladder)Problem
make bootstrap-selfhost-helloworldfails while AOT-linking the inventorycompile_driveremit helper.Runtime::parseAndCompile()aborts withUnknown type encounteredon bothcompile_driver.phpandmain.phpin the helloworld smoke tree.php-src reference
N/A — compile-pipeline / type-lowering gap during self-host AOT (not Zend runtime parity).
Repro
Shrink goal: bisect
compile_driver.php/main.phpwithbin/compile.phporbin/vm.php -luntil a minimal-rsnippet triggers the sameUnknown type encounteredwithout the full helloworld Makefile.Scope (this repo)
test/selfhost/compiler_helloworld_smoke/compile_driver.phptest/selfhost/compiler_helloworld_smoke/main.phplib/Runtime.phpRuntime::parseAndCompile()type dispatchlib/Compiler.phplib/JIT.phpDone when
make bootstrap-selfhost-helloworldpasses in Dockerphp-compiler-strict) in PR — default CI remains php-src-strict elsewhereRelated
./script/bootstrap-selfhost-helloworld-probe.shNotes
make bootstrap-selfhost-link: OK (link stage alone passes)