Repository navigation
build!: open 5.x on master (PHP 8.5+, merge-up from 4.x) - #841
Merged
Merged
Conversation
A push to the 4.x maintenance branch opens (or updates) a "merge 4.x into master" pull request, so fixes made on 4.x are carried forward. CI also runs on pushes to 4.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
master becomes the 5.x line: the dev-master alias moves to 5.x-dev and the minimum PHP version to 8.5 (CI matrices, docs and the issue template follow). The PHP 8.5 syntax fixture guard in SyntaxFixturesWeavingTest is dropped here, phpstan reports it as always false under the new constraint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
- OPcache is always built in since PHP 8.5: FileCachePrimer no longer reports
a missing extension and always passes opcache.file_cache_read_only=0,
CacheFileWriter calls opcache_invalidate() directly, the opcache skips of
PreloadTest and OpcacheWarmupCommandTest are gone
- PHP 8.5 syntax stubs are autoloaded like the other generator stubs, their
tests lose the RequiresPhp('>= 8.5.0') gates and require_once calls
- comments and docs no longer describe pre-8.5 behaviour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #841 +/- ##
============================================
+ Coverage 98.60% 98.63% +0.03%
+ Complexity 2291 2288 -3
============================================
Files 131 131
Lines 5947 5942 -5
============================================
- Hits 5864 5861 -3
+ Misses 83 81 -2 ☔ View full report in Codecov by Harness. |
lisachenko
commented
Nov 8, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
lisachenko
commented
Nov 8, 2026
The FCC and closure stubs are only read through parser-reflection, so they need neither an autoload-dev files entry nor a require_once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
lisachenko
commented
Nov 8, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxhC1GE15owYbSGjsHAjCr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
master becomes the 5.x line; 4.x stays the maintenance branch and is cascaded into master.
Three commits, meant to be reviewed separately:
ci: cascade-merge 4.x into master: new.github/workflows/merge-up.yml. On every push to4.xit opens achore: merge 4.x into masterPR, or does nothing when the PR is already open or master already contains 4.x. It usessecrets.GH_PAT_TOKENwhen that secret is set, because PRs opened with the defaultGITHUB_TOKENdo not start CI. CS, PHPStan and PHPUnit now also run on pushes to4.x.Important: push-triggered workflows run from the pushed branch, so this commit also has to land on
4.x(cherry-pickci: cascade-merge 4.x into masterthere). Until then the rule never fires.build!: require PHP 8.5, alias master as 5.x-dev:php: ^8.5.0anddev-masteraliased as5.x-dev. The CI matrices drop 8.4, and jobs that ran on one version (coverage, demos, cs, copilot setup) now run on 8.5. README badge, CONTRIBUTING, AGENTS.md, the issue template and a new5.0.0 (unreleased)CHANGELOG section are updated. ThePHP_VERSION_ID < 80500skip inSyntaxFixturesWeavingTestis removed in this commit because PHPStan reports it as always false under the new constraint, so this commit stays green.refactor!: drop the code paths for PHP versions before 8.5:FileCachePrimerno longer reports a missing extension and always passesopcache.file_cache_read_only=0.CacheFileWritercallsopcache_invalidate()without afunction_existscheck. The OPcache skips inPreloadTestandOpcacheWarmupCommandTestare removed.autoload-dev.files. Their#[RequiresPhp('>= 8.5.0')]gates andrequire_oncecalls are removed.method_exists($type, 'isSelf'/'isParent')probe inTypeGenerator.ReflectionNamedTypeon PHP 8.5 has no such methods, so the probe is not a pre-8.5 guard (the old comment said otherwise and is fixed). TheRequiresPhp('>= 8.6.0-dev')gates are also kept.Checklist
type(scope): summary)composer checkpasses: cs clean, phpstan level 10 no errors, phpunit 3519 tests OK. The run used PHP 8.5.12 with JIT disabled, because of the known 8.5.12 tracing-JIT crash listed intests/AGENTS.md.Generated by Claude Code