Problem
#1493 targets strict HelloWorld native emit (no Zend bin/compile.php fallback). The next honest step toward #1498 / #1521 is not jumping straight to full lib/ — it is proving the self-host bundle can emit a slightly larger fixture that exercises the real compile driver (Compiler → JIT → AOT link) beyond a one-line echo.
Today test/selfhost/compiler_compile_smoke/ (or equivalent) may still use Zend emit even when M3 run is native.
Goal
BOOTSTRAP_M3_COMPILE_SMOKE_STRICT=1 ./script/bootstrap-selfhost-compile-smoke-probe.sh
# exits 0: native binary emits + links compile-smoke output without Zend compile.php
| Milestone |
Proves |
| HelloWorld strict |
#1493 — minimal emit |
| This issue |
Native emit for compiler_compile_smoke bundle (multi-op, still tiny) |
| M4 loop |
#1498 — rebuild next compiler tree |
Implementation hints
| Step |
Path |
Notes |
| Fixture |
test/selfhost/compiler_compile_smoke/main.php |
Grow only as M3 allowlist (#1905, #1768) permits |
| Probe |
script/bootstrap-selfhost-compile-smoke-probe.sh |
Mirror bootstrap-selfhost-helloworld-probe.sh |
| Gate |
BOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATE |
Opt-in in ci-local.sh (0); flip after green |
| Blockers |
lib/VM/HashTable.php, native runtime |
Same class as #1514 / #1761 |
| Allowlist |
lib/JIT.php M3 batches |
Extend #1905 snapshot when symbols land |
Acceptance criteria
Verification (local / Docker only)
make docker-build-22
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
bash -lc 'script/apply-patches.sh && BOOTSTRAP_M3_COMPILE_SMOKE_STRICT=1 ./script/bootstrap-selfhost-compile-smoke-probe.sh'
No GitHub Actions.
Dependencies
Links
Problem
#1493 targets strict HelloWorld native emit (no Zend
bin/compile.phpfallback). The next honest step toward #1498 / #1521 is not jumping straight to fulllib/— it is proving the self-host bundle can emit a slightly larger fixture that exercises the real compile driver (Compiler→JIT→AOTlink) beyond a one-line echo.Today
test/selfhost/compiler_compile_smoke/(or equivalent) may still use Zend emit even when M3 run is native.Goal
BOOTSTRAP_M3_COMPILE_SMOKE_STRICT=1 ./script/bootstrap-selfhost-compile-smoke-probe.sh # exits 0: native binary emits + links compile-smoke output without Zend compile.phpcompiler_compile_smokebundle (multi-op, still tiny)Implementation hints
test/selfhost/compiler_compile_smoke/main.phpscript/bootstrap-selfhost-compile-smoke-probe.shbootstrap-selfhost-helloworld-probe.shBOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATEci-local.sh(0); flip after greenlib/VM/HashTable.php, native runtimelib/JIT.phpM3 batchesAcceptance criteria
php-compiler:22.04-devwith LLVM 9docs/self-host-target.mdM3 ladder (between HelloWorld and M4)make north-star2-verify(DevEx: make north-star2-verify presenter gate (self-host M0–M4) #1865) includes probe when gate1Verification (local / Docker only)
No GitHub Actions.
Dependencies
Links
docs/bootstrap-selfhost.md,docs/self-host-target.md