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 @@ -115,9 +115,9 @@ Also: `phpc doctor` (env probe), `phpc validate-manifest`, `phpc cgi`. See `./ph
| [003-MiniWebApp](examples/003-MiniWebApp/) | ✅ `phpc serve` ([#539](https://github.com/PurHur/php-compiler/issues/539)) | ✅ `phpc build --project` ([#752](https://github.com/PurHur/php-compiler/issues/752)) | ✅ native execute ([#764](https://github.com/PurHur/php-compiler/issues/764); [#1044](https://github.com/PurHur/php-compiler/issues/1044)) | ✅ deploy smoke ([#676](https://github.com/PurHur/php-compiler/issues/676), [#1530](https://github.com/PurHur/php-compiler/issues/1530)) |
| [005-SessionsWeb](examples/005-SessionsWeb/) | ✅ `phpc serve` + session smoke ([#1881](https://github.com/PurHur/php-compiler/issues/1881), [#1887](https://github.com/PurHur/php-compiler/issues/1887)) | ✅ `phpc build` ([#1946](https://github.com/PurHur/php-compiler/issues/1946)) | ✅ AOT execute (`SESSIONS_WEB_AOT_SMOKE_GATE=1`, [#1891](https://github.com/PurHur/php-compiler/issues/1891)) | ✅ deploy smoke opt-in ([#1893](https://github.com/PurHur/php-compiler/issues/1893)) |
| [006-FileUploadWeb](examples/006-FileUploadWeb/) | ✅ `phpc serve` + multipart smoke ([#1999](https://github.com/PurHur/php-compiler/issues/1999), [#2009](https://github.com/PurHur/php-compiler/issues/2009)) | ✅ `phpc build` ([#2011](https://github.com/PurHur/php-compiler/issues/2011)) | ✅ AOT execute (`FILE_UPLOAD_WEB_AOT_SMOKE_GATE=1` default, [#2012](https://github.com/PurHur/php-compiler/issues/2012)) | — |
| [007-ThrowsWeb](examples/007-ThrowsWeb/) | ✅ `phpc serve` + caught invalid POST ([#2076](https://github.com/PurHur/php-compiler/issues/2076); VM smoke `THROWS_WEB_SMOKE_GATE=1` default, [#2093](https://github.com/PurHur/php-compiler/issues/2093), [#2125](https://github.com/PurHur/php-compiler/issues/2125)) | 📋 deferred ([#2101](https://github.com/PurHur/php-compiler/issues/2101)) | 📋 deferred ([#2101](https://github.com/PurHur/php-compiler/issues/2101)) | — |
| [007-ThrowsWeb](examples/007-ThrowsWeb/) | ✅ `phpc serve` + caught invalid POST ([#2076](https://github.com/PurHur/php-compiler/issues/2076); VM smoke `THROWS_WEB_SMOKE_GATE=1` default, [#2093](https://github.com/PurHur/php-compiler/issues/2093), [#2125](https://github.com/PurHur/php-compiler/issues/2125)) | ✅ `THROWSWEB_AOT_LINK_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) | ✅ `THROWSWEB_AOT_SMOKE_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) | — |

`make examples-aot-smoke` links and executes 000–004 when LLVM is ready (003 execute green — [#764](https://github.com/PurHur/php-compiler/issues/764)); **006-FileUploadWeb** multipart execute when `FILE_UPLOAD_WEB_AOT_SMOKE_GATE=1` (default — [#2012](https://github.com/PurHur/php-compiler/issues/2012), [#2013](https://github.com/PurHur/php-compiler/issues/2013)). **007-ThrowsWeb** AOT link/execute when `THROWSWEB_AOT_*_GATE=1` (opt-in — [#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2104](https://github.com/PurHur/php-compiler/issues/2104)). **005-SessionsWeb** VM/session curls: `make examples-web-smoke` ([#1887](https://github.com/PurHur/php-compiler/issues/1887)). **007-ThrowsWeb** five-minute presenter curls: [docs/GETTING-STARTED.md §5b](docs/GETTING-STARTED.md) ([#2158](https://github.com/PurHur/php-compiler/issues/2158)). Per-example commands: [examples/README.md](examples/README.md).
`make examples-aot-smoke` links and executes 000–004 when LLVM is ready (003 execute green — [#764](https://github.com/PurHur/php-compiler/issues/764)); **006-FileUploadWeb** multipart execute when `FILE_UPLOAD_WEB_AOT_SMOKE_GATE=1` (default — [#2012](https://github.com/PurHur/php-compiler/issues/2012), [#2013](https://github.com/PurHur/php-compiler/issues/2013)). **007-ThrowsWeb** AOT link/execute when `THROWSWEB_AOT_*_GATE=1` (default — [#2135](https://github.com/PurHur/php-compiler/issues/2135), [#2101](https://github.com/PurHur/php-compiler/issues/2101)). **005-SessionsWeb** VM/session curls: `make examples-web-smoke` ([#1887](https://github.com/PurHur/php-compiler/issues/1887)). **007-ThrowsWeb** five-minute presenter curls: [docs/GETTING-STARTED.md §5b](docs/GETTING-STARTED.md) ([#2158](https://github.com/PurHur/php-compiler/issues/2158)). Per-example commands: [examples/README.md](examples/README.md).

### Capabilities

Expand Down
2 changes: 1 addition & 1 deletion docs/GETTING-STARTED.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ curl -s -F 'doc=@examples/006-FileUploadWeb/README.md' http://127.0.0.1:8080/exa
curl -sf -X POST -d 'email=bad' http://127.0.0.1:8080/example.php | grep -i invalid
```

**Talking point:** Caught exceptions in a web form without Zend PHP at dev time — same `throw` / `catch` path as production CGI. Automated curls: `make examples-throws-smoke` ([#2141](https://github.com/PurHur/php-compiler/issues/2141), [#2125](https://github.com/PurHur/php-compiler/issues/2125), [#2093](https://github.com/PurHur/php-compiler/issues/2093)). Gate ladder: `./phpc doctor --gates | grep -i throws` ([#2102](https://github.com/PurHur/php-compiler/issues/2102)). Native AOT link/execute for user-defined `ValidationError` is deferred ([#2157](https://github.com/PurHur/php-compiler/issues/2157); opt-in `THROWSWEB_AOT_*_GATE` — [#2101](https://github.com/PurHur/php-compiler/issues/2101)) — see [examples/007-ThrowsWeb/README.md](../examples/007-ThrowsWeb/README.md) and ROADMAP [#78](https://github.com/PurHur/php-compiler/issues/78).
**Talking point:** Caught exceptions in a web form without Zend PHP at dev time — same `throw` / `catch` path as production CGI. Automated curls: `make examples-throws-smoke` ([#2141](https://github.com/PurHur/php-compiler/issues/2141), [#2125](https://github.com/PurHur/php-compiler/issues/2125), [#2093](https://github.com/PurHur/php-compiler/issues/2093)). Gate ladder: `./phpc doctor --gates | grep -i throws` ([#2102](https://github.com/PurHur/php-compiler/issues/2102)). Native AOT link/execute for user-defined `ValidationError` is green ([#2157](https://github.com/PurHur/php-compiler/issues/2157); `THROWSWEB_AOT_*_GATE=1` default — [#2135](https://github.com/PurHur/php-compiler/issues/2135), [#2101](https://github.com/PurHur/php-compiler/issues/2101)) — see [examples/007-ThrowsWeb/README.md](../examples/007-ThrowsWeb/README.md) and ROADMAP [#78](https://github.com/PurHur/php-compiler/issues/78).

### 6. (Optional) Self-host smoke

Expand Down
10 changes: 5 additions & 5 deletions docs/capabilities-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ ROADMAP Phase 4/5: [#78](https://github.com/PurHur/php-compiler/issues/78), trac

| Construct | VM | JIT | AOT | Issue | Notes |
|-----------|:--:|:---:|:---:|-------|-------|
| `007-ThrowsWeb` reference app | yes | yes | partial | [#2076](https://github.com/PurHur/php-compiler/issues/2076) | #2076 VM serve + caught invalid POST (THROWS_WEB_SMOKE_GATE default #2125); AOT deferred #2101/#2104 |
| `throw` / `catch` on invalid POST (web serve) | yes | yes | partial | [#195](https://github.com/PurHur/php-compiler/issues/195) | #195 throw lowering; #57 catch; #2084 compliance PHPT pack |
| AOT project link (`phpc build --project`) | n/a | n/a | partial | [#2101](https://github.com/PurHur/php-compiler/issues/2101) | ExamplesCompileTest 007 link; opt-in THROWSWEB_AOT_LINK_GATE (#2101) |
| AOT CGI execute (caught throw probe) | n/a | n/a | partial | [#2104](https://github.com/PurHur/php-compiler/issues/2104) | examples-aot-smoke 007 slice; opt-in THROWSWEB_AOT_SMOKE_GATE (#2104) |
| `007-ThrowsWeb` reference app | yes | yes | yes | [#2076](https://github.com/PurHur/php-compiler/issues/2076) | #2076 VM serve + caught invalid POST (THROWS_WEB_SMOKE_GATE default #2125); AOT link/execute default #2135 |
| `throw` / `catch` on invalid POST (web serve) | yes | yes | yes | [#195](https://github.com/PurHur/php-compiler/issues/195) | #195 throw lowering; #57 catch; #2084 compliance PHPT pack; user empty class AOT #2157 |
| AOT project link (`phpc build --project`) | n/a | n/a | yes | [#2101](https://github.com/PurHur/php-compiler/issues/2101) | ExamplesCompileTest 007 link; THROWSWEB_AOT_LINK_GATE default-on (#2135) |
| AOT CGI execute (caught throw probe) | n/a | n/a | yes | [#2104](https://github.com/PurHur/php-compiler/issues/2104) | examples-aot-smoke 007 slice; THROWSWEB_AOT_SMOKE_GATE default-on (#2135) |

_Throws rows are curated from ROADMAP issue state; `throw` [#195](https://github.com/PurHur/php-compiler/issues/195); `try`/`catch` [#57](https://github.com/PurHur/php-compiler/issues/57); overlay [#2084](https://github.com/PurHur/php-compiler/issues/2084). Opt-in ci-local gates: `THROWS_WEB_SMOKE_GATE` (VM serve default-on #2125), `THROWSWEB_AOT_LINK_GATE`, `THROWSWEB_AOT_SMOKE_GATE`._
_Throws rows are curated from ROADMAP issue state; `throw` [#195](https://github.com/PurHur/php-compiler/issues/195); `try`/`catch` [#57](https://github.com/PurHur/php-compiler/issues/57); overlay [#2084](https://github.com/PurHur/php-compiler/issues/2084). ci-local gates: `THROWS_WEB_SMOKE_GATE` (VM serve default-on #2125), `THROWSWEB_AOT_LINK_GATE` / `THROWSWEB_AOT_SMOKE_GATE` (AOT default-on #2135; set `0` to skip)._
8 changes: 4 additions & 4 deletions docs/local-ci-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,15 +218,15 @@ FILE_UPLOAD_WEB_DEPLOY_SMOKE_GATE=1 ./script/deploy-smoke.sh --example 006

## 007-ThrowsWeb gates ([#2076](https://github.com/PurHur/php-compiler/issues/2076), [#2093](https://github.com/PurHur/php-compiler/issues/2093))

Progressive ladder (VM throw/catch → AOT link → AOT execute). VM smoke default-on ([#2125](https://github.com/PurHur/php-compiler/issues/2125), [#2093](https://github.com/PurHur/php-compiler/issues/2093)); AOT gates opt-in until **#195** / **#57** / **#2101** land; execute default-on blocked on **#2157** (follow-up **#2135**). Copy-paste ladder: `./phpc doctor --gates` (**#2102**).
Progressive ladder (VM throw/catch → AOT link → AOT execute). VM smoke default-on ([#2125](https://github.com/PurHur/php-compiler/issues/2125), [#2093](https://github.com/PurHur/php-compiler/issues/2093)); AOT gates default-on ([#2135](https://github.com/PurHur/php-compiler/issues/2135), [#2157](https://github.com/PurHur/php-compiler/issues/2157)). Copy-paste ladder: `./phpc doctor --gates` (**#2102**).

**`ci-local.sh` llvm tail** (mirror **006** link → execute): `ci_run_aot_link_phpunit` (`@group aot-link`, honors `THROWSWEB_AOT_LINK_GATE`) runs before `ci_run_throws_web_aot_execute` (`@group throwsweb-aot-execute`, honors `THROWSWEB_AOT_SMOKE_GATE`) — audit **#2178**; default-on flip **#2135** after **#2157** ✅.
**`ci-local.sh` llvm tail** (mirror **006** link → execute): `ci_run_aot_link_phpunit` (`@group aot-link`, honors `THROWSWEB_AOT_LINK_GATE`) runs before `ci_run_throws_web_aot_execute` (`@group throwsweb-aot-execute`, honors `THROWSWEB_AOT_SMOKE_GATE`) — audit **#2178**; default-on **#2135** after **#2157** ✅.

| Stage | Variable | Default | When enabled |
|-------|----------|---------|--------------|
| VM throw/catch | `THROWS_WEB_SMOKE_GATE` | `1` | `make examples-throws-smoke` · `ci-fast.sh` ([#2125](https://github.com/PurHur/php-compiler/issues/2125), [#2093](https://github.com/PurHur/php-compiler/issues/2093)) |
| AOT link | `THROWSWEB_AOT_LINK_GATE` | `0` | `./script/ci-local.sh --filter test007ThrowsWebAotLink` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2143](https://github.com/PurHur/php-compiler/issues/2143)) |
| AOT execute | `THROWSWEB_AOT_SMOKE_GATE` | `0` | `ThrowsWebAotExecuteTest` or `EXAMPLES_AOT_SMOKE_ONLY=007 ./script/examples-aot-smoke.sh` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2104](https://github.com/PurHur/php-compiler/issues/2104)) |
| AOT link | `THROWSWEB_AOT_LINK_GATE` | `1` | `./script/ci-local.sh --filter test007ThrowsWebAotLink` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)); set `0` to skip during iteration |
| AOT execute | `THROWSWEB_AOT_SMOKE_GATE` | `1` | `ThrowsWebAotExecuteTest` or `EXAMPLES_AOT_SMOKE_ONLY=007 ./script/examples-aot-smoke.sh` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) |

```bash
./phpc doctor --gates | grep -E 'THROWS|007-ThrowsWeb'
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/development-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ The `examples/` tree (**000–007**) is kept for **VM + AOT regression testing**
| [003-MiniWebApp](https://github.com/PurHur/php-compiler/tree/master/examples/003-MiniWebApp) | Multi-file web app (router, templates, CGI superglobals) | Default-on gates: lint, VM, AOT link/execute ([#472](https://github.com/PurHur/php-compiler/issues/472)) |
| [005-SessionsWeb](https://github.com/PurHur/php-compiler/tree/master/examples/005-SessionsWeb) | Session/cookie smoke | Opt-in `SESSIONS_WEB_*` gates |
| [006-FileUploadWeb](https://github.com/PurHur/php-compiler/tree/master/examples/006-FileUploadWeb) | Multipart upload smoke | Opt-in `FILE_UPLOAD_WEB_*` gates |
| [007-ThrowsWeb](https://github.com/PurHur/php-compiler/tree/master/examples/007-ThrowsWeb) | `throw` / `catch` on invalid POST ([#2076](https://github.com/PurHur/php-compiler/issues/2076)) | VM `THROWS_WEB_SMOKE_GATE=1` default ([#2093](https://github.com/PurHur/php-compiler/issues/2093), [#2125](https://github.com/PurHur/php-compiler/issues/2125)); AOT opt-in `THROWSWEB_*` ([#2101](https://github.com/PurHur/php-compiler/issues/2101)) |
| [007-ThrowsWeb](https://github.com/PurHur/php-compiler/tree/master/examples/007-ThrowsWeb) | `throw` / `catch` on invalid POST ([#2076](https://github.com/PurHur/php-compiler/issues/2076)) | VM `THROWS_WEB_SMOKE_GATE=1` default ([#2093](https://github.com/PurHur/php-compiler/issues/2093), [#2125](https://github.com/PurHur/php-compiler/issues/2125)); AOT `THROWSWEB_*_GATE=1` default ([#2135](https://github.com/PurHur/php-compiler/issues/2135)) |

**Verify (optional):** `./phpc doctor --gates`, `make miniwebapp-gates`, or `make north-star1-verify` (legacy name — example regression bundle, not a north star). Details: [miniwebapp-gates.md](https://github.com/PurHur/php-compiler/blob/master/docs/miniwebapp-gates.md) (repo only). Historical tracker [#1044](https://github.com/PurHur/php-compiler/issues/1044) is closed; do not open new “north star web app” issues.

Expand Down Expand Up @@ -217,7 +217,7 @@ GitHub issues use labels `phase-0:Foundation` … `phase-5:reference-app`. Deliv
| 003-MiniWebApp | ✅ | ✅ | ✅ ([#764](https://github.com/PurHur/php-compiler/issues/764), [#676](https://github.com/PurHur/php-compiler/issues/676)) | Primary web integration test |
| 005-SessionsWeb | ✅ `phpc serve` + `SESSIONS_WEB_SMOKE_GATE=1` ([#1887](https://github.com/PurHur/php-compiler/issues/1887)) | ✅ `SESSIONS_WEB_AOT_LINK_GATE=1` ([#1946](https://github.com/PurHur/php-compiler/issues/1946)) | ✅ opt-in `SESSIONS_WEB_AOT_SMOKE_GATE=1` ([#1891](https://github.com/PurHur/php-compiler/issues/1891), [#1923](https://github.com/PurHur/php-compiler/issues/1923)) | Deploy smoke opt-in `SESSIONS_WEB_DEPLOY_SMOKE_GATE=1` ([#1893](https://github.com/PurHur/php-compiler/issues/1893)); default-on tracked in [#1954](https://github.com/PurHur/php-compiler/issues/1954) / [#1967](https://github.com/PurHur/php-compiler/issues/1967) |
| 006-FileUploadWeb | ✅ `phpc serve` + `FILE_UPLOAD_WEB_SMOKE_GATE=1` ([#2009](https://github.com/PurHur/php-compiler/issues/2009)) | ✅ `FILE_UPLOAD_WEB_AOT_LINK_GATE=1` ([#2011](https://github.com/PurHur/php-compiler/issues/2011)) | ✅ `FILE_UPLOAD_WEB_AOT_SMOKE_GATE=1` ([#2012](https://github.com/PurHur/php-compiler/issues/2012)) | Deploy smoke opt-in `FILE_UPLOAD_WEB_DEPLOY_SMOKE_GATE=1` ([#2038](https://github.com/PurHur/php-compiler/issues/2038)); default-on tracked in [#2042](https://github.com/PurHur/php-compiler/issues/2042) |
| 007-ThrowsWeb | ✅ `phpc serve` + `THROWS_WEB_SMOKE_GATE=1` ([#2076](https://github.com/PurHur/php-compiler/issues/2076), [#2093](https://github.com/PurHur/php-compiler/issues/2093)) | 📋 opt-in `THROWSWEB_AOT_LINK_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101)) | 📋 opt-in `THROWSWEB_AOT_SMOKE_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2104](https://github.com/PurHur/php-compiler/issues/2104)) | `make examples-throws-smoke` ([#2141](https://github.com/PurHur/php-compiler/issues/2141)); deploy smoke tracked in [#2124](https://github.com/PurHur/php-compiler/issues/2124) |
| 007-ThrowsWeb | ✅ `phpc serve` + `THROWS_WEB_SMOKE_GATE=1` ([#2076](https://github.com/PurHur/php-compiler/issues/2076), [#2093](https://github.com/PurHur/php-compiler/issues/2093)) | `THROWSWEB_AOT_LINK_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) | `THROWSWEB_AOT_SMOKE_GATE=1` ([#2101](https://github.com/PurHur/php-compiler/issues/2101), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) | `make examples-throws-smoke` ([#2141](https://github.com/PurHur/php-compiler/issues/2141)); deploy smoke tracked in [#2124](https://github.com/PurHur/php-compiler/issues/2124) |

Commands: `./phpc run`, `./phpc build`, `./phpc serve`, `make examples-aot-smoke` (see [README](https://github.com/PurHur/php-compiler/blob/master/README.md) and [examples/README.md](https://github.com/PurHur/php-compiler/blob/master/examples/README.md)).

Expand Down
7 changes: 5 additions & 2 deletions examples/007-ThrowsWeb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ curl -sf -X POST -d 'email=bad' http://127.0.0.1:8080/example.php | grep -i inva
|-------|-------|
| VM `phpc run` | ✅ GET — empty state |
| VM `phpc serve` | ✅ caught invalid POST (`THROWS_WEB_SMOKE_GATE=1` default, [#2093](https://github.com/PurHur/php-compiler/issues/2093), [#2125](https://github.com/PurHur/php-compiler/issues/2125)) |
| JIT / AOT | 📋 deferred — [#2101](https://github.com/PurHur/php-compiler/issues/2101) / [#2104](https://github.com/PurHur/php-compiler/issues/2104) |
| AOT `phpc build` + execute | ✅ caught invalid POST ([#2157](https://github.com/PurHur/php-compiler/issues/2157), [#2135](https://github.com/PurHur/php-compiler/issues/2135)) |
| JIT | 📋 deferred — [#2167](https://github.com/PurHur/php-compiler/issues/2167) |

## CI gates

Expand All @@ -30,8 +31,10 @@ Defaults from `script/ci-defaults.env`:
| Stage | Gate | Default | Command |
|-------|------|---------|---------|
| VM serve | `THROWS_WEB_SMOKE_GATE` | `1` | `make examples-throws-smoke` · `ci-fast.sh` ([#2125](https://github.com/PurHur/php-compiler/issues/2125)) |
| AOT link | `THROWSWEB_AOT_LINK_GATE` | `1` | `./script/ci-local.sh --filter test007ThrowsWebAotLink` ([#2135](https://github.com/PurHur/php-compiler/issues/2135)) |
| AOT execute | `THROWSWEB_AOT_SMOKE_GATE` | `1` | `ThrowsWebAotExecuteTest` · `EXAMPLES_AOT_SMOKE_ONLY=007 make examples-aot-smoke` ([#2135](https://github.com/PurHur/php-compiler/issues/2135)) |

Opt-out for doc-only iteration: `THROWS_WEB_SMOKE_GATE=0 ./script/ci-fast.sh`
Opt-out for doc-only iteration: `THROWS_WEB_SMOKE_GATE=0 THROWSWEB_AOT_LINK_GATE=0 THROWSWEB_AOT_SMOKE_GATE=0 ./script/ci-fast.sh`

## Benchmark row

Expand Down
Loading