Skip to content

πŸ—ΊοΈ ROADMAP: Self-host + web-capable PHP subset (living)Β #78

Description

@PurHur

Living ROADMAP (high-signal, phased)

Merge gates are local/Docker only β€” no GitHub Actions (#394 βœ…).
Harness-safe: make test-harness, ./script/docker-ci-local.sh, ./script/docker-exec.sh.

North star: #1492 (M3β†’M5 self-host)

Development focus (Jul 2026): optimize for fast M5 feedback β€” not north-star5-verify --strict on every PR (~1h). Daily gates: make north-star5-verify-fast (~1–2 min), make bootstrap-selfhost-vm-driver-execute-probe (~20ms). Reserve --strict for pre-merge bootstrap/gen-0/vendor-prelink PRs. Doc: docs/bootstrap-m5-fast-path.md Β· Cursor rule: .cursor/rules/m5-fast-development.mdc.


User release roadmap (next: v1.1.0)

Meta: #8739 (reopen on tag day) Β· Latest tag: v1.0.0 (2026-05-29) Β· Pre-release: v1.1.0-dev.1 (2026-07-04)

Field Value
Target version v1.1.0
Target window Jul 2026 (after --full readiness green)
Theme M5 fast-path stability for users; stdlib/JIT parity batch since v1.0.0 (enum, property hooks, DOM ext, preg_match JIT, spl_autoload, php-in-php helpers, stream/getenv JIT, docs sync)

Must-ship checklist

Gate checklist

Out of scope (v1.1.0)

  • Bootstrap honesty tag / v2 self-host release
  • north-star5-verify --strict (~1h)
  • Full Zend parity, MCJIT execute (#98)

Bootstrap release roadmap (future v2 / self-host honesty)

Not a tag candidate until north-star5-verify --strict is green on demand. Track progress only.

Blocker / gap Gate Status Tracker
Honest spine PHP main() runtime full-spine smoke without native shortcut 🚧 partial #8559
Compile-spine stub retirement shrink PHP_COMPILER_SELFHOST_AOT on compile spine 🚧 in progress #1402
M3 JIT unit strict inventory compile_driver 🚧 partial #3038
Bootstrap include_path spine include resolution open #3223
php-cfg asymmetric visibility overlay apply-patches.sh anchor πŸ”΄ regression #9729
Strict M5 presenter north-star5-verify.sh --strict (~1h) βœ… green (pre-merge only) #1492

Must-ship before bootstrap tag: spine N/N honest runtime, stub retirement on compile path, no Zend in cold-boot loop β€” see #1492.


Milestone status (Jul 2026 β€” maintainer probe 2026-07-09)

Milestone Gate Status Tracker
M0 minimal link make bootstrap-selfhost-link βœ… GREEN #2894
M2 spine / inventory bootstrap-inventory.php --check βœ… GREEN 4302/4302
M2 spine coverage check-selfhost-spine-coverage-sync.php πŸ”΄ RED #17521 (#17511 regression)
M2 VM driver execute make bootstrap-selfhost-vm-driver-execute-probe βœ… GREEN #13101 closed PR #13110
M3 HelloWorld strict make bootstrap-selfhost-helloworld βœ… GREEN (emit_path=native) β€”
M3 JIT unit strict inventory compile_driver 🚧 partial #3038
M4 full-revision make bootstrap-selfhost-full-revision-probe βœ… GREEN #2880
M4 full ladder make bootstrap-loop-probe βœ… GREEN #1498
M5 vendor (committed) prelinked/bootstrap-vendor/*.o manifest βœ… GREEN 3/3 object_ok
M5 spine w/o vendor/ north-star5 step 4c βœ… GREEN #3052 closed
M5 gen-0 no Zend BOOTSTRAP_M5_NO_ZEND=1 empty build/ βœ… GREEN #3053 closed
M5 vendor native rebuild rm prelinked/*.o, no Zend fallback βœ… GREEN #3054 closed
M5 presenter (daily) make north-star5-verify-fast πŸ”΄ RED #17521 spine sync
M5 presenter (pre-merge) north-star5-verify.sh --strict βœ… GREEN ~1h β€” bootstrap PRs only
M5 honest runtime full-spine PHP main() at runtime 🚧 partial #8559
User release --full release-readiness.sh --full πŸ”΄ RED (6/9; #17521, #17522) quick 3/5

Daily verify (fast β€” use during development):

make bootstrap-selfhost-vm-driver-execute-probe   # ~20ms
make north-star5-verify-fast                      # ~1–2 min
./script/ci-fast.sh                               # NORTH_STAR5_VERIFY_FAST_GATE=1 default

Pre-merge bootstrap verify (strict β€” sparingly):

./script/docker-exec.sh -- bash -lc './script/north-star5-verify.sh --strict'

Next 5 worker priorities (parallel-safe)

  1. Spine sync isGenerator helpers β€” #17521 (release-blocker + IMPORTANT β€” unblocks quick + north-star5-fast)
  2. FastCGI AOT smoke β€” #17522 (release-blocker + IMPORTANT β€” 009-FastCGIWeb PATH_INFO exit 134)
  3. Re-probe --full bundle β€” after Release v1.1.0: spine sync ReflectionFunctionIsGenerator + ReflectionMethodIsGenerator (#17511)Β #17521 + Release v1.1.0: fix examples 009-FastCGIWeb AOT smoke (PATH_INFO exit 134 realloc)Β #17522 β†’ user_release_ready: yes
  4. CHANGELOG expand β€” refresh v1.1.0 stub before tag; reopen Release roadmap: v1.1.0Β #8739 meta on tag day
  5. Compile-spine stub retirement β€” #1402 (bootstrap track; parallel)

Parity backlog themes (Jul 2026)

Theme Examples
Language (PHP 8.3–8.4) property hooks (#6424–#6427), enum case invoke #9846, lazy proxy #7387
Stdlib gaps ext/dom batch (#14418–#14469), is_callable #3132, ext/zip #3337
php-in-php / shrink C #7389 linker audit, superglobals_refresh.c #5330, phpc_stream.c #5343
php-src-strict enum operands #5906 / #5907 / #7390, hash #5780

Repro (roadmap health check)

docker info >/dev/null
./script/docker-exec.sh -- bash -lc './script/release-readiness.sh --json'
./script/docker-exec.sh -- bash -lc './script/release-readiness.sh --full --json'

Done when (living doc)

Verification (local / Docker only)

./script/docker-exec.sh -- bash -lc 'make north-star5-verify-fast'
./script/docker-exec.sh -- bash -lc 'php script/bootstrap-inventory.php --check'
./script/docker-exec.sh -- bash -lc 'make bootstrap-loop-probe'

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:toolingTooling / CI / docsenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when β€” safe for workers to claimphase-0:FoundationPhase 0 – foundation & DevEx

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions