Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Presenter script and troubleshooting: [`docs/GETTING-STARTED.md`](docs/GETTING-S
| **003-MiniWebApp** VM + AOT link | ✅ |
| **003** AOT execute (home, hello, PATH_INFO, contact) | ✅ native execute ([#764](https://github.com/PurHur/php-compiler/issues/764) closed; close tracker [#1044](https://github.com/PurHur/php-compiler/issues/1044)) |
| Self-host **M0–M1** | ✅ |
| Self-host **M2** spine | 🚧 **606** / 611 units ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#2066](https://github.com/PurHur/php-compiler/issues/2066)) |
| Self-host **M2** spine | 🚧 **609** / 611 units ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#2126](https://github.com/PurHur/php-compiler/issues/2126)) |
| Full Zend PHP compatibility | ❌ — subset only (matrices in `docs/`, not on status site) |

MiniWebApp gates: [docs/miniwebapp-gates.md](docs/miniwebapp-gates.md) ([#472](https://github.com/PurHur/php-compiler/issues/472)). Presenter verify: `make north-star1-verify` ([#1845](https://github.com/PurHur/php-compiler/issues/1845)). Docker image: `php-compiler:22.04-dev`.
Expand Down Expand Up @@ -147,7 +147,7 @@ Matrix details: [docs/local-ci-matrix.md](docs/local-ci-matrix.md).
|-----------|----------------|--------|
| **M0 — Bundled subset runs** | ~**109** literal `require_once` units in `test/selfhost/compiler_minimal/main.php` compile+link under AOT; native binary prints `compiler_minimal bundle OK` | ✅ ([#557](https://github.com/PurHur/php-compiler/issues/557), [#913](https://github.com/PurHur/php-compiler/issues/913)) |
| **M1 — Compiler-shaped bundle** | Same bundle **lints** as one translation unit; **compile-smoke** links a tiny fixture and runs AOT echo (`compiler smoke`); driver smoke bundles `bin/compile.php`-adjacent units | ✅ ([#1025](https://github.com/PurHur/php-compiler/issues/1025)) |
| **M2 — Full top-level `lib/` + spine** | All **14** top-level `lib/*.php` lint ✅; **`compiler_lib_spine_smoke`** (**606** / **611** inventory units; 5 deferred) native link ✅; grow toward full `bin/vm.php` path | 🚧 100% inventory coverage (cli shim substitutes) |
| **M2 — Full top-level `lib/` + spine** | All **14** top-level `lib/*.php` lint ✅; **`compiler_lib_spine_smoke`** (**609** / **611** inventory units; 2 deferred) native link ✅; grow toward full `bin/vm.php` path | 🚧 100% inventory coverage (cli shim substitutes) |
| **M3 — Native compiles PHP** | Self-host bundle links; HelloWorld AOT **runs** natively; **compile emit still Zend fallback** | 🚧 partial |
| **M4 — Bootstrap loop** | Native toolchain rebuilds the **next** compiler sources | ⬜ |
| **M5 — Full self-host** | Real `bin/vm.php` / `bin/compile.php` on full inventory; **no Zend bootstrap** | ⬜ **north star** ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
Expand Down
2 changes: 1 addition & 1 deletion docs/bootstrap-m5-fast-path.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Supporting fixes from #1402:
| `Runtime::loadJitContext` | Deny-listed (LLVM 9 link crash; same fragment as JIT deny list) |
| `Runtime::__construct` | Slim ctor via `compileRuntimeConstructM3Native` → `compileBlockPhpLowering` (#1494) |
| `Runtime::initParsePipeline` / `Runtime::initCompiler` / `Runtime::loadCoreModules` | On deny list; `compileRuntime*M3Native` → PHP CFG lowering (#1494) |
| `Runtime::initVmContext` | **Native** via `RuntimeInitVmContext::emit` (allocate `VM\Context`, set `runtime` + `vmContext`); wired in `compileBlock()`; off deny list (#1494). PHP CFG `new VMContext` still LLVM 9 link crash when combined with ctor spine. |
| `Runtime::initVmContext` | **Native** via `RuntimeInitVmContext::emit` (allocate `VM\Context` + `ErrorReporter` + `ScriptStack`, wire `runtime` + `vmContext`); wired in `compileBlock()`; off deny list (#1494, #2126). PHP CFG `new VMContext` still LLVM 9 link crash when combined with ctor spine. |
| `Runtime::loadJit` | `compileRuntimeLoadJitM3Native` + nested `createJit` helpers (#1495) |
| `Runtime::standalone` | Compile-driver link OK (#1402, #1056) |
| `helloworld_compile_smoke` | Deny-listed for link (LLVM 9); compile_driver bundle keeps stub; runtime emit via `helloworld_m3_emit_native_entry.php` / `compile_smoke_m3_emit_native_entry.php` + `PHP_COMPILER_EMIT_HELPER_LINK=1` (#1768, #1983) |
Expand Down
6 changes: 3 additions & 3 deletions docs/bootstrap-selfhost.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Self-host bootstrap roadmap

**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **606** / **611** (`php script/bootstrap-spine-count.php`; 5 deferred native-link [#2066](https://github.com/PurHur/php-compiler/issues/2066)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella).
**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **609** / **611** (`php script/bootstrap-spine-count.php`; 2 deferred native-link [#2126](https://github.com/PurHur/php-compiler/issues/2126)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella).

## Current gates

Expand All @@ -20,8 +20,8 @@
| Self-host probe in full CI | `./script/ci-local.sh` (LLVM tail) | ✅ default-on when LLVM 9 present; `BOOTSTRAP_SELFHOST_PROBE_GATE=0` to skip ([#829](https://github.com/PurHur/php-compiler/issues/829)) |
| Wave gate in full CI | `./script/ci-local.sh` (LLVM tail) | ✅ default-on when LLVM 9 present; `BOOTSTRAP_WAVE_CHECK=0` to skip; `./script/bootstrap-wave-check.sh --fail-fast` |
| Self-host native link | `./script/bootstrap-selfhost-link.sh` | ✅ `build/selfhost` prints `compiler_minimal bundle OK` ([#557](https://github.com/PurHur/php-compiler/issues/557), [#913](https://github.com/PurHur/php-compiler/issues/913)) |
| M2 lib spine smoke lint | `php bin/compile.php -l test/selfhost/compiler_lib_spine_smoke/main.php` | ✅ **606/611** units ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#2001](https://github.com/PurHur/php-compiler/issues/2001), [#2066](https://github.com/PurHur/php-compiler/issues/2066))
| M2 spine coverage drift | `php script/check-selfhost-spine-coverage-sync.php` | ✅ 606/611 in spine; **5** deferred (native-link [#1960](https://github.com/PurHur/php-compiler/issues/1960), [#2066](https://github.com/PurHur/php-compiler/issues/2066)); `SELFHOST_SPINE_COVERAGE_SYNC_GATE=1` ([#1945](https://github.com/PurHur/php-compiler/issues/1945))
| M2 lib spine smoke lint | `php bin/compile.php -l test/selfhost/compiler_lib_spine_smoke/main.php` | ✅ **609/611** units ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#2001](https://github.com/PurHur/php-compiler/issues/2001), [#2126](https://github.com/PurHur/php-compiler/issues/2126))
| M2 spine coverage drift | `php script/check-selfhost-spine-coverage-sync.php` | ✅ 609/611 in spine; **2** deferred (native-link [#1960](https://github.com/PurHur/php-compiler/issues/1960), [#2126](https://github.com/PurHur/php-compiler/issues/2126)); `SELFHOST_SPINE_COVERAGE_SYNC_GATE=1` ([#1945](https://github.com/PurHur/php-compiler/issues/1945))
| M2 lib spine smoke native run | `./script/bootstrap-selfhost-lib-spine-smoke-link.sh` or `BOOTSTRAP_LIB_SPINE_SMOKE=1 make bootstrap-selfhost-lib-spine-smoke` | ✅ `build/selfhost-lib-spine-smoke` prints `compiler_lib_spine_smoke bundle OK` |
| M2 lib spine VM `-r` smoke | `./script/bootstrap-selfhost-lib-spine-vm-smoke.sh` or `BOOTSTRAP_LIB_SPINE_VM_SMOKE=1 make bootstrap-selfhost-lib-spine-vm-smoke` | ✅ same binary + `PHP_COMPILER_VM_SPINE_SMOKE=1` prints `vm-spine-ok` ([#1846](https://github.com/PurHur/php-compiler/issues/1846); `ci-local.sh` default `BOOTSTRAP_LIB_SPINE_VM_SMOKE_GATE=1` ([#1867](https://github.com/PurHur/php-compiler/issues/1867)); set `0` to skip) |
| M3 HelloWorld self-host probe lint | `php bin/compile.php -l test/selfhost/compiler_helloworld_smoke/main.php` | ✅ `compiler_compile_smoke` spine + `helloworld_compile_smoke` driver (linkable) |
Expand Down
10 changes: 5 additions & 5 deletions docs/pages/development-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ permalink: /development-status.html
| **Try it** | `git clone` → `composer install` → `./phpc test --fast` → [`docs/GETTING-STARTED.md`](https://github.com/PurHur/php-compiler/blob/master/docs/GETTING-STARTED.md) |
| **Overall progress** | ~**50%** toward a self-hosting compiler (indicative) |
| **Wave 3 (May 2026)** | Language **12/12** · Stdlib **13/13** ([#1380](https://github.com/PurHur/php-compiler/issues/1380)) |
| **North star (self-host)** | M0–M1 ✅ · M2 spine **606/611** native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960)) · M3 HelloWorld strict ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)) · M5 ⬜ ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **North star (self-host)** | M0–M1 ✅ · M2 spine **609/611** native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960)) · M3 HelloWorld strict ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)) · M5 ⬜ ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **Example tests** | `examples/000–006` — VM + AOT regression fixtures (not a project north star) |
| **Not Zend parity** | Subset compiler (not full Zend PHP) |

Expand Down Expand Up @@ -51,7 +51,7 @@ Indicative composite toward a **web-capable, self-hosting** compiler (not line-c
| **Stdlib** | ~58% | Wave-3 batch ([#1367](https://github.com/PurHur/php-compiler/issues/1367)–[#1379](https://github.com/PurHur/php-compiler/issues/1379)): **13/13** closed on master |
| **Web AOT** (build, deploy) | ~70% | Project link ✅; CLI execute ✅; examples **003–006** as integration tests |
| **Example harness** (003-MiniWebApp, 005-SessionsWeb, …) | ~90% | VM + AOT execute + default-on CI gates — **regression fixtures only** |
| **Self-host** (north star, M0–M5) | ~99% | M0–M1 ✅; M2 spine **606/611** native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960)); M3 HelloWorld strict ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)), compile-smoke 🚧 ([#1937](https://github.com/PurHur/php-compiler/issues/1937)); M4–M5 ⬜ — [self-host-target.md](https://github.com/PurHur/php-compiler/blob/master/docs/self-host-target.md)
| **Self-host** (north star, M0–M5) | ~99% | M0–M1 ✅; M2 spine **609/611** native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960)); M3 HelloWorld strict ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)), compile-smoke 🚧 ([#1937](https://github.com/PurHur/php-compiler/issues/1937)); M4–M5 ⬜ — [self-host-target.md](https://github.com/PurHur/php-compiler/blob/master/docs/self-host-target.md)

**Overall (indicative): ~52%** toward the [project north star](#north-star-self-host) below.

Expand Down Expand Up @@ -115,7 +115,7 @@ The `examples/` tree (**000–006**) is kept for **VM + AOT regression testing**
|-----------|---------|--------|
| **M0 — Bundled subset runs** | ~109 literal `require_once` units in `test/selfhost/compiler_minimal/main.php` → `build/selfhost` prints `compiler_minimal bundle OK` | ✅ [#557](https://github.com/PurHur/php-compiler/issues/557), [#913](https://github.com/PurHur/php-compiler/issues/913) |
| **M1 — Compiler-shaped bundle** | Bundled `Compiler.php` AOT lint; compile-smoke native link + AOT echo (`compiler smoke`); driver smoke toward `bin/compile.php` | ✅ [#1025](https://github.com/PurHur/php-compiler/issues/1025), [#1095](https://github.com/PurHur/php-compiler/issues/1095) |
| **M2 — Lib spine growth** | `compiler_lib_spine_smoke` bundle toward full `bin/vm.php` inventory (**611** files) | ✅ native link **606** / 611 units (100%; 5 deferred [#2066](https://github.com/PurHur/php-compiler/issues/2066); [#1960](https://github.com/PurHur/php-compiler/issues/1960), [#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **M2 — Lib spine growth** | `compiler_lib_spine_smoke` bundle toward full `bin/vm.php` inventory (**611** files) | ✅ native link **609** / 611 units (100%; 2 deferred [#2126](https://github.com/PurHur/php-compiler/issues/2066); [#1960](https://github.com/PurHur/php-compiler/issues/1960), [#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **M3 — Native compiles PHP** | HelloWorld strict native emit ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)); compile-smoke fixture 🚧 ([#1937](https://github.com/PurHur/php-compiler/issues/1937)) | 🚧 partial ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **M4 — Bootstrap loop** | Native toolchain rebuilds the **next** compiler sources (same tree, new revision) | ⬜ |
| **M5 — Full self-host** | Real `bin/vm.php` / `bin/compile.php` path on full inventory; **no Zend bootstrap** | ⬜ **north star** ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
Expand All @@ -125,7 +125,7 @@ The `examples/` tree (**000–006**) is kept for **VM + AOT regression testing**
| Set | ~Files | Notes |
|-----|--------|-------|
| `compiler_minimal` bundle (M0) | **109** | Literal `require_once` closure |
| `compiler_lib_spine_smoke` (M2) | **606** | vm.php-path lib/ + ext/standard growth bundl
| `compiler_lib_spine_smoke` (M2) | **609** | vm.php-path lib/ + ext/standard growth bundl
| Top-level `lib/*.php` | **14** | Per-file AOT lint ✅ |
| Full vm.php inventory | **611** | Phase A inventory (`php script/bootstrap-inventory.php`) |

Expand Down Expand Up @@ -160,7 +160,7 @@ Details: [self-host-target.md](https://github.com/PurHur/php-compiler/blob/maste
| Native link + run | `./script/bootstrap-selfhost-link.sh` | ✅ M0 |
| Compile smoke link | `make bootstrap-selfhost-compile-smoke` | ✅ M1 |
| Compile smoke AOT echo | `make bootstrap-selfhost-compile-smoke-run` | ✅ M1 |
| M2 spine native link | `BOOTSTRAP_LIB_SPINE_SMOKE=1 make bootstrap-selfhost-lib-spine-smoke` | ✅ `compiler_lib_spine_smoke bundle OK` (**606** / **611** units; [#2001](https://github.com/PurHur/php-compiler/issues/2001), [#2066](https://github.com/PurHur/php-compiler/issues/2066)) |
| M2 spine native link | `BOOTSTRAP_LIB_SPINE_SMOKE=1 make bootstrap-selfhost-lib-spine-smoke` | ✅ `compiler_lib_spine_smoke bundle OK` (**609** / **611** units; [#2001](https://github.com/PurHur/php-compiler/issues/2001), [#2066](https://github.com/PurHur/php-compiler/issues/2066)) |
| M3 HelloWorld strict | `BOOTSTRAP_M3_HELLOWORLD_STRICT_GATE=1` → `bootstrap-selfhost-helloworld-probe.sh` | ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)); opt-in gate default `0` until default-on ([#1866](https://github.com/PurHur/php-compiler/issues/1866)) |
| M3 compile-smoke probe | `BOOTSTRAP_M3_COMPILE_SMOKE_PROBE_GATE=1` (default) | ✅ partial — native **run** ✅; strict native emit 🚧 ([#1937](https://github.com/PurHur/php-compiler/issues/1937)) |
| Wave gate | `./script/bootstrap-wave-check.sh` | ✅ locally / Docker; GHA workflow disabled |
Expand Down
10 changes: 5 additions & 5 deletions docs/pages/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ <h3>🎯 Project north star — Self-host</h3>
<strong>Compiler fully compiles itself:</strong> native binary from <code>lib/</code> (no <code>vendor/</code>),
compiles PHP, then rebuilds the next compiler revision without Zend.
</p>
<p><strong>Status:</strong> M0 ✅ · M1 ✅ · M2 ✅ link (606/611) · M3 HelloWorld strict ✅ · compile-smoke 🚧 · M5 ⬜.</p>
<p><strong>Status:</strong> M0 ✅ · M1 ✅ · M2 ✅ link (609/611) · M3 HelloWorld strict ✅ · compile-smoke 🚧 · M5 ⬜.</p>
<p><a href="/php-compiler/development-status.html#north-star-self-host">Full north-star doc →</a> · <a href="https://github.com/PurHur/php-compiler/blob/master/docs/self-host-target.md">Target doc</a> · <a href="https://github.com/PurHur/php-compiler/issues/1492">#1492</a></p>
</article>
<article class="track-panel track-panel--web">
Expand Down Expand Up @@ -198,7 +198,7 @@ <h2>Overall progress</h2>
</div>
<p class="overall-progress__note">
Strong on VM and AOT linking; wave-3 language **12/12** and stdlib **13/13** on master; local/Docker CI while remote GHA/Circle are disabled.
<strong>North star</strong> M0–M1 done, M2 spine link (606/611, #1960), M3 HelloWorld strict (#1493); M5 full self-compile is the stretch goal ([#1492](https://github.com/PurHur/php-compiler/issues/1492)).
<strong>North star</strong> M0–M1 done, M2 spine link (609/611, #1960), M3 HelloWorld strict (#1493); M5 full self-compile is the stretch goal ([#1492](https://github.com/PurHur/php-compiler/issues/1492)).
Example web gates (<code>make north-star1-verify</code>, <strong>005-SessionsWeb</strong> opt-in #1891/#1893) stay in CI as regression only.
</p>
</div>
Expand Down Expand Up @@ -244,7 +244,7 @@ <h3><span class="status-dot status-dot--wip"></span> Example polish</h3>
<article class="card">
<span class="phase-num">Self-host</span>
<h3><span class="status-dot status-dot--wip"></span> Compile-itself</h3>
<p>M0–M1 ✅; M2 spine 606/611 link ✅; M3 HelloWorld strict ✅; compile-smoke 🚧; M5 = full self-host.</p>
<p>M0–M1 ✅; M2 spine 609/611 link ✅; M3 HelloWorld strict ✅; compile-smoke 🚧; M5 = full self-host.</p>
<div class="mini-progress"><div class="progress-track"><div class="progress-fill" data-width="54"></div></div></div>
</article>
</div>
Expand All @@ -254,7 +254,7 @@ <h3><span class="status-dot status-dot--wip"></span> Compile-itself</h3>
<h2>Self-host bootstrap</h2>
<p class="section-intro">
Stretch goal: the compiler <strong>fully compiles itself</strong> (M5). Zend still runs
<code>bin/compile.php</code> today; native output is a growing <code>lib/</code> bundle (~109 minimal → <strong>606</strong> spine units toward <strong>611</strong> vm.php-path files).
<code>bin/compile.php</code> today; native output is a growing <code>lib/</code> bundle (~109 minimal → <strong>609</strong> spine units toward <strong>611</strong> vm.php-path files).
Full ladder: <a href="/php-compiler/development-status.html#north-star-self-host">development-status.md</a>
· <a href="https://github.com/PurHur/php-compiler/blob/master/docs/self-host-target.md">self-host-target.md</a>
· tracker <a href="https://github.com/PurHur/php-compiler/issues/1492">#1492</a>.
Expand All @@ -273,7 +273,7 @@ <h4>M1 — Compiler-shaped bundle</h4>
<li class="is-done">
<span class="ladder__marker" aria-hidden="true">✓</span>
<h4>M2 — Full top-level <code>lib/</code></h4>
<p>14/14 lint ✅; <strong>606/611</strong> spine units native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960), [#1419](https://github.com/PurHur/php-compiler/issues/1419)).</p>
<p>14/14 lint ✅; <strong>609/611</strong> spine units native link ✅ ([#1960](https://github.com/PurHur/php-compiler/issues/1960), [#1419](https://github.com/PurHur/php-compiler/issues/1419)).</p>
</li>
<li class="is-wip">
<span class="ladder__marker" aria-hidden="true">3</span>
Expand Down
Loading