Skip to content

M4: Bootstrap loop — native binary rebuilds next compiler revision #1498

@PurHur

Description

@PurHur

Parent

Epic: #1492 (Self-host critical path M3→M5)

Milestone

M4 — bootstrap loop: native gen-1 compiles gen-2 without Zend on the compile step

Problem (May 2026 harness)

Scaffold landed; remaining gap is M5 cold boot (no vendor/, compiled driver everywhere) — not “no gen-2 binary.”

Slice Status (2026-05-27 probe)
test/selfhost/bootstrap_loop_smoke/ lint + link
make bootstrap-loop-probe (full) emit_path=native, exit 0
bootstrap-loop-gen1-full-spine-emit.sh ✅ gen-2 compiler_lib_spine_smoke bundle OK
Zend-free cold boot #2771, #2768

Goal

Bootstrap loop closed for CI: gen-1 native binary compiles gen-2 smoke and (opt-in) full spine; no php bin/compile.php on the compile step; documented in docs/bootstrap-m5-fast-path.md.

Definition of done

Repro

# Smoke ladder (green)
./script/docker-exec.sh -- bash -lc 'make bootstrap-loop-probe'

# Inventory-scale gen-2 (green)
./script/docker-exec.sh -- bash -lc './script/bootstrap-loop-gen1-full-spine-emit.sh'

# Optional: full probe with spine env
BOOTSTRAP_M4_GEN1_COMPILE_FULL_SPINE=1 ./script/bootstrap-loop-probe.sh

Scope (next PRs)

Piece Path
CI default script/ci-local.sh, script/ci-defaults.env
Full-spine in probe script/bootstrap-loop-probe.sh
M5 driver script/bootstrap-selfhost-driver-smoke.sh, #2769

Unblock order

#2768 Expr_Closure → #2771 cold boot → #2769 compiled wave-check → M5

Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions