Skip to content

feat: support PHP 8.4 and 8.5 in parallel (installable on 8.6 nightly) - #13

Merged
lisachenko merged 2 commits into
mainfrom
claude/php-8.4-generics-support-oawvzf
Aug 7, 2026
Merged

feat: support PHP 8.4 and 8.5 in parallel (installable on 8.6 nightly)#13
lisachenko merged 2 commits into
mainfrom
claude/php-8.4-generics-support-oawvzf

Conversation

@lisachenko

@lisachenko lisachenko commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Summary

Widens the package from single-minor (~8.4.0) to PHP 8.4 and 8.5 in parallel, with composer install additionally working on 8.6 nightly for the engine-free analysis layer. z-engine keeps its one-minor-per-release-line model; the parallel support comes from the 8.4.x-dev || 8.5.x-dev constraint, which lets composer resolve the z-engine line matching the running platform (the 8.4 branch on PHP 8.4, master via its 8.5.x-dev alias on PHP 8.5). z-engine owns all version-dependent header complexity — this package needed no source changes, only constraints, CI and docs.

What changed

  • composer.json: php: ^8.4 (8.4 / 8.5 / 8.6-nightly all install); lisachenko/z-engine: 8.4.x-dev || 8.5.x-dev.
  • CI: every engine-touching job (tests, opcache/save_comments=0, benchmarks smoke, analysis tests, generated stubs, debug-build internal group, PHPStan) now runs on a {8.4, 8.5} matrix, plus a continue-on-error PHP 8.6 nightly job running the analysis suite only (the PHPStan layer needs no engine; installed with --ignore-platform-req=php+).
  • tools/docker/php-debug.Dockerfile: handles PHP 8.5's statically linked opcache (no opcache.so to load).
  • Docs: README badge (8.4 | 8.5) and requirements, AGENTS.md §1 (version matching) and CONTRIBUTING describe the per-minor z-engine resolution model.

Verification

All 16 CI checks are green on both matrix legs, including the 8.6-nightly experimental job. Locally the full suite was also run against PHP 8.4.24 on a --enable-debug build (including the destructive internal group with process isolation) and PHP 8.5.9, plus PHPStan level max, stubs:check and cs:check.

Note

An earlier companion PR (z-engine#142) proposed teaching one z-engine branch both minors; it was closed by design — z-engine stays one-minor-per-line, and this PR is self-contained.


🤖 Generated with Claude Code

https://claude.ai/code/session_0184AgTjKVX4S6qmvRsdM6dt

z-engine now bundles generated engine definitions for both supported
minors and selects the right set at boot, hiding all version-dependent
header complexity from this package. Accordingly:

- composer.json widens php to ^8.4 (8.4, 8.5 and 8.6 nightly all
  install; the engine boots only on minors z-engine has definitions
  for) and takes z-engine as 8.4.x-dev || 8.5.x-dev
- CI runs every engine-touching job on a {8.4, 8.5} matrix, plus an
  experimental analysis-only job on PHP 8.6 nightly (the PHPStan layer
  needs no engine)
- the debug-build Dockerfile handles PHP 8.5's statically linked
  opcache (no opcache.so to load)
- README badge/requirements, AGENTS.md and CONTRIBUTING describe the
  parallel-support model

Verified: full suite green on PHP 8.4.24 (debug build, incl. the
destructive internal group) and PHP 8.5.9 against the unified z-engine
branch; PHPStan, stubs:check and cs:check green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184AgTjKVX4S6qmvRsdM6dt
…e per minor

Per review on z-engine#142, z-engine keeps its one-minor-per-release-line
model; the 8.4.x-dev || 8.5.x-dev constraint is what makes this package
run on PHP 8.4 and 8.5 in parallel (composer resolves the 8.4 branch on
8.4 and master on 8.5). Reword README, AGENTS, CONTRIBUTING and the CI
header to describe that mechanism instead of a single dual-version
z-engine install.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184AgTjKVX4S6qmvRsdM6dt
@lisachenko
lisachenko marked this pull request as ready for review August 7, 2026 20:05
@lisachenko
lisachenko merged commit 39bd905 into main Aug 7, 2026
16 checks passed
@lisachenko
lisachenko deleted the claude/php-8.4-generics-support-oawvzf branch August 7, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants