Skip to content

Prepare 7.0: PHP 8.3-8.6, PHPUnit 12.5, Psalm as a tool - #21

Open
byjg wants to merge 1 commit into
masterfrom
7.0
Open

Prepare 7.0: PHP 8.3-8.6, PHPUnit 12.5, Psalm as a tool#21
byjg wants to merge 1 commit into
masterfrom
7.0

Conversation

@byjg

@byjg byjg commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Prepares this component for the 7.0 line (dependency level L1).

Requirements

"php": ">=8.3 <8.7" — PHP 8.3, 8.4, 8.5 and 8.6.

The previous <8.6 is exclusive, so it stopped at 8.5 and excluded PHP 8.6 entirely.

Toolchain

Before After
PHPUnit ^10.5|^11.5 ^12.5
Psalm ^5.9|^6.13 in require-dev ^6.16 in tools/psalm/composer.json

PHPUnit 13 is deliberately not used. It requires PHP >=8.4.1, which would break the 8.3 floor, and it pulls sebastian/diff ^9.0 — which the newest stable Psalm (6.16.1) does not accept. Because minimum-stability: dev is set, that combination does not fail; it silently resolves Psalm to an unreleased 6.x-dev branch head. Pinning PHPUnit to ^12.5 keeps one stable PHPUnit and one stable Psalm across the whole matrix.

Resolved consistently as PHPUnit 12.5.33 + Psalm 6.16.1 + sebastian/diff 7.0.0.

ByJG dependencies

Bumped to ^7.0. While 7.0 is unreleased these resolve to 7.0.x-dev from each component's 7.0 branch (minimum-stability: dev + prefer-stable: true), so the L0 branches must be pushed first — verified resolving on PHP 8.6.

Psalm moved out of require-dev

Psalm enumerates the PHP versions it supports and no published release lists 8.6, so as a dev dependency it made composer install fail on the 8.6 build job before any test ran. It now lives in tools/psalm/composer.json and is installed only by the Psalm job (PHP 8.5). composer psalm bootstraps the tool, so local usage is unchanged.

Continuous integration

  • Build matrix now includes PHP 8.6.
  • Psalm job moved to PHP 8.5. Psalm 6.16.1 declares ~8.1.31 || ~8.2.27 || ~8.3.16 || ~8.4.3 || ~8.5.0 and cannot be installed on 8.6 at all.

Housekeeping

  • phpunit.xml.distphpunit.xml
  • 6.x changelogs carried onto the 7.0 branch
  • CHANGELOG-7.0.md added/updated

Verification

Tests run locally on PHP 8.5.9 and PHP 8.6.0beta1 — both green.

Widen the PHP constraint to ">=8.3 <8.7"; the previous "<8.6" is
exclusive and excluded PHP 8.6.

Bump byjg/* dependencies to ^7.0. While 7.0 is unreleased these resolve
to 7.0.x-dev from each component's 7.0 branch, via minimum-stability dev
with prefer-stable.

Pin PHPUnit to ^12.5 and move Psalm to tools/psalm/composer.json. Psalm
enumerates supported PHP versions and no release lists 8.6, so as a
require-dev it made "composer install" fail on the 8.6 build job before
any test ran. "composer psalm" bootstraps the tool and runs it.

CI: add PHP 8.6 to the matrix; the Psalm job runs on 8.5.

Housekeeping: rename phpunit.xml.dist to phpunit.xml, carry the 6.x
changelog onto this branch, and update CHANGELOG-7.0.md.
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.

1 participant