Skip to content

chore: require PHP 8.4 and z-engine ~8.4.0 - #11

Merged
lisachenko merged 2 commits into
masterfrom
claude/pin-z-engine-8.4
Aug 6, 2026
Merged

chore: require PHP 8.4 and z-engine ~8.4.0#11
lisachenko merged 2 commits into
masterfrom
claude/pin-z-engine-8.4

Conversation

@lisachenko

@lisachenko lisachenko commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Brings immutable-object onto the same z-engine 8.4 baseline as the other dependent repos (php-shared-data-extension#13, userland-php-generics#12), and modernizes the repo automation.

The library still targeted PHP 7.4/8.0 with z-engine ^0.8.1|^0.9.1. The class-extension hook API it relies on (WritePropertyHook, GetPropertyPointerHook, UnsetPropertyHook, InterfaceGetsImplementedHook, ObjectCreateTrait) is unchanged in z-engine 8.4, so no source changes are needed — only the platform pins and tooling:

  • composer: php ~8.4.0, lisachenko/z-engine ~8.4.0, explicit ext-ffi, PHPUnit ^12
  • phpunit.xml.dist: migrated to the current schema (filter/whitelist and logging sections no longer exist in PHPUnit 12)
  • CI: phpunit.yml replaced with a full ci.yml pipeline — a validate/lint gate (composer validate --strict, php -l over src and tests) followed by the test matrix on PHP 8.4 with FFI enabled and JIT off, covering lowest + highest dependency sets; drops the old PHP 7.4/8.0 xdebug matrix
  • dependabot: keeps the existing daily composer updates and adds weekly github-actions updates so action pins stay current
  • README: advertised PHP requirement bumped to 8.4

Verified locally on PHP 8.4.19: all 8 phpt functional tests pass with both --prefer-lowest and highest dependency sets against z-engine 8.4.0.

Note: unlike the shared-data extension, this library is not affected by the z-engine 8.4.0 pointerAtAddress() leak (lisachenko/z-engine#135) — it makes no per-call pointer lookups — so CI here does not need to wait for the 8.4.1 tag.

lisachenko and others added 2 commits August 6, 2026 19:59
The library still targeted PHP 7.4/8.0 with z-engine 0.8/0.9. The class
extension hook API it relies on (write-property, get-property-pointer,
unset-property, interface-gets-implemented) is unchanged in z-engine 8.4,
so no source changes are needed - only the platform pins:

- composer: php ~8.4.0, lisachenko/z-engine ~8.4.0, explicit ext-ffi,
  phpunit ^12
- phpunit.xml.dist: migrate to the current schema (filter/whitelist and
  logging sections are gone)
- CI: run on PHP 8.4 with ffi enabled and JIT off (lowest + highest deps),
  validate the manifest, drop the xdebug coverage run
- README: bump the advertised PHP requirement

All 8 phpt functional tests pass on PHP 8.4.19 with both dependency sets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HRDZ2XsoVuB5uG4qXKL3ny
…ctions

- replace phpunit.yml with ci.yml: a validate/lint gate (composer
  validate --strict, php -l over src and tests) followed by the test
  matrix (PHP 8.4, lowest + highest dependency sets, FFI on, JIT off)
- dependabot: keep the daily composer updates and add weekly
  github-actions updates so action pins stay current

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HRDZ2XsoVuB5uG4qXKL3ny
@lisachenko
lisachenko marked this pull request as ready for review August 6, 2026 20:16
@lisachenko
lisachenko merged commit 635d88b into master Aug 6, 2026
1 check passed
@lisachenko
lisachenko deleted the claude/pin-z-engine-8.4 branch August 6, 2026 20:16
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