Skip to content

chore(deps): require stable z-engine releases instead of dev branches - #37

Merged
lisachenko merged 1 commit into
mainfrom
claude/z-engine-stable-updates-00g5v4
Aug 19, 2026
Merged

chore(deps): require stable z-engine releases instead of dev branches#37
lisachenko merged 1 commit into
mainfrom
claude/z-engine-stable-updates-00g5v4

Conversation

@lisachenko

@lisachenko lisachenko commented Aug 18, 2026

Copy link
Copy Markdown
Owner

What

z-engine now ships stable tags for both supported PHP minors — 8.4.2 on the 8.4 line and 8.5.0 on the 8.5 line.

"lisachenko/z-engine": "8.4.x-dev || 8.5.x-dev""~8.4.2 || ~8.5.0".

What does not change: the root stability pair

"minimum-stability": "dev" / "prefer-stable": true stay. They are still needed — but for lisachenko/php-shared-data-extension, which has no tags yet and is consumed as dev-main, not for z-engine any more. The README used to attribute the requirement to z-engine; it now says which dependency actually needs it, so it can be dropped in one step once that package is tagged.

Resolution: confirmed stable

php-shared-data-extension published its own dev-only z-engine requirement, which Composer intersected with the constraint here and resolved to dev-master. That is fixed upstream — lisachenko/php-shared-data-extension#30 is merged — and resolution from Packagist now lands on the real tags with no path repository and no further change here:

PHP z-engine resolved shared-data
8.4.19 8.4.2 dev-main 45a7844
8.5.9 8.5.0 dev-main 45a7844

Why the tilde and not a caret

One z-engine release line per supported PHP minor: ~8.4.2 admits patch releases inside the 8.4 line but never the 8.5 line, ~8.5.0 the same for 8.5. A caret would span both lines and any future one, so a z-engine built for PHP 8.6 could be installed before this package claims to support 8.6. Each z-engine tag also declares its own platform requirement (~8.4.0 / ~8.5.0), so only one line can satisfy a given runtime, and Core::init() still enforces the exact match at boot.

Testing

Full .phpt suite on both minors, against the Packagist-resolved stable tags above:

PHP z-engine Result
8.4.19 8.4.2 121/121 pass
8.5.9 8.5.0 121/121 pass

Also ran earlier on PHP 8.5 against dev-master — the pre-merge resolution — 121/121. No segfaults, bus errors, hung children or stuck runtimes on any run; the fork, preemption and rendezvous tests all completed normally.

Note: PHPUnit could not be installed in the environment this was prepared in (egress is restricted to the lisachenko/* repositories, so Packagist dist archives for dev dependencies are unreachable). The .phpt files were executed by a runner that reproduces what PhptTestCase does — child process per file, the file's own --INI-- block plus display_errors=1, exact --EXPECT-- comparison, unanchored --EXPECTREGEX-- match. CI runs the real composer test on both minors.

Docs touched alongside: README.md (installation + requirements), AGENTS.md, the CI comment, and the spikes/README.md vendor-tree setup snippet, which no longer needs the minimum-stability/prefer-stable config calls to require z-engine. spikes/VERDICTS.md is left alone — it records what was measured at the time, against the commits named in it.

z-engine now ships stable tags for both supported PHP minors (8.4.2 on the
8.4 line, 8.5.0 on the 8.5 line), so the development-branch constraint is no
longer needed.

- require "lisachenko/z-engine": "~8.4.2 || ~8.5.0" — one stable release line
  per supported PHP minor. The tilde admits patch releases inside a line but
  never the next minor line, which would be built for a PHP this package does
  not claim to support; each z-engine tag also declares its own ~8.4.0/~8.5.0
  platform requirement, so only one line can ever satisfy a given runtime.
- keep the root "minimum-stability": "dev" / "prefer-stable": true pair: it is
  still required, but now only for lisachenko/php-shared-data-extension, which
  has no tags yet and is consumed as dev-main. The README says so explicitly
  instead of attributing the requirement to z-engine.
- update README, AGENTS.md, the CI comment and the spikes setup snippet.

Note on resolution order: until php-shared-data-extension drops its own
dev-only z-engine requirement, that requirement is intersected with the
constraint here and still resolves dev-master. Verified with a path
repository against that package's updated branch, which resolves the tags.

Verified on both minors: PHP 8.4.19 resolves z-engine 8.4.2 and PHP 8.5.9
resolves 8.5.0, 121/121 .phpt tests pass on each.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013foRd1XwLwqjUSkSWeWrMe
@lisachenko
lisachenko marked this pull request as ready for review August 19, 2026 05:03
@lisachenko
lisachenko merged commit 38e9659 into main Aug 19, 2026
6 checks passed
@lisachenko
lisachenko deleted the claude/z-engine-stable-updates-00g5v4 branch August 19, 2026 05:04
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