Skip to content

🌐 North Star 1: Web-capable PHP application (living tracker) #1044

@PurHur

Description

@PurHur

Summary

North Star 1 is the primary product goal for php-compiler: compile and run a small, normal PHP web application (multi-file, templates, forms, headers, JSON) as a native AOT binary without Zend PHP at runtime.

This issue was the living tracker for that goal. The umbrella roadmap remains #78. Public docs: development-status.md § North Star 1.

Orthogonal track: North Star 2 — self-host / epic #1492.

Status:Closed 2026-05-25 (batch 77) — all required gates default-on; doc bundle landed (#1525, #1531, #1789, #1832, #1855, #1845, #1857).


Definition of done

  • Reference app examples/003-MiniWebApp passes VM and native AOT for the full route matrix (home, hello, contact POST, api/status, PATH_INFO + ?route= fallback) — #764 ✅, #1529
  • phpc build --project + ./.phpc/bin/app with CGI env matches phpc serve output on acceptance tests (#747)
  • MiniWebAppAotExecuteTest default-on in ./script/ci-local.sh (#676, #791)
  • examples-aot-smoke.sh 003 slice enabled (#881, #683)
  • phpc deploy smoke for 003 default-on in full CI (#1530 / #1825)
  • phpc serve --aot / MiniWebAppServeAotTest default-on (#1524 / CI: default MINIWEBAPP_SERVE_AOT_GATE=1 (#1524) #1532)
  • Shell examples-web-smoke --aot 003 default-on (#1523 / #1836; MINIWEBAPP_WEB_SMOKE_AOT_GATE=1 in script/ci-defaults.env)
  • Docs/README matrix synced (#1525, #1531, #1789, #1832, #1855)
  • Production deploy guide (#445) — post-close polish
  • FastCGI adapter (#173) — post-close polish

Not required for close: full Zend PHP compatibility, sessions/DB, self-host bootstrap, layout-edge bisect (#1750).


Reference application

Route Method Expected
/index.php / / GET Home HTML (layout + config.php)
/index.php/hello?name= GET Greeting
/index.php/contact POST Thank-you template
/index.php/api/status GET JSON
?route=… GET/POST Legacy dispatch

Scaffold: phpc init --profile miniwebapp → parity with 003 (#695).


Final progress (2026-05-25)

Layer Status Tracking
Lint #539
VM serve + PATH_INFO #489
VM CLI matrix #597
Web shell smoke (VM) #664
AOT link #752
AOT execute (PHPUnit) #764, #1529
AOT serve HTTP ✅ default-on #1524
Shell --aot curls ✅ default-on #1523 / #1760
Deploy-smoke 003 execute ✅ default-on #1530
Docs sync #1525, #1531, presenter #1845 / #1857

CI gate ladder (all default-on)

Umbrella: #472 · Doc: docs/miniwebapp-gates.md

Stage Default on master
1 Lint
1b VM CLI
2 ServeTest
3 Web smoke (VM)
4b AOT link
4b2 AOT execute MINIWEBAPP_AOT_EXECUTE_GATE=1
4 serve-aot MINIWEBAPP_SERVE_AOT_GATE=1
4c examples-aot-smoke 003
4c2 web-smoke --aot MINIWEBAPP_WEB_SMOKE_AOT_GATE=1
4d deploy 003 execute DEPLOY_SMOKE_003_EXECUTE=1
make north-star1-verify   # presenter gate (#1845)
phpc doctor --gates
./script/ci-local.sh

Follow-up (not blocking this tracker)

Item Issue
Layout-edge AOT bisect #1750
Production deploy guide #445
FastCGI adapter #173
JIT project 003 #587, #1770
PSR-4 autoload for 003 #1856

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:webWeb / CGI / superglobalsenhancementNew feature or requestphase-5:reference-appPhase 5 – reference web application

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions