You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Language: final plain properties still accepted on reference profile — Zend compile fatal; PROFILE=8.4 isFinal/override broken (re-#24686, Zend/zend_compile.c) #24992
language · php-src-strict · final properties / inheritance
Problem
On the reference (8.2) profile, Zend rejects final on plain properties with a compile fatal. bin/vm.php still accepts the declaration, allows writes, and allows a child class to redeclare the property.
Under PHP_COMPILER_PROFILE=8.4, Zend 8.4 allows the declaration but ReflectionProperty::isFinal() is 1 and a child override is a compile fatal. VM reports isFinal=0 and eval of a child override succeeds (override_ok).
Probed 2026-07-29 on host Zend 8.2.32 / Zend 8.4.23 (php:8.4-cli) vs bin/vm.php @ current master.
Repro
Zend
VM
default profile: class A { public final string $x = "a"; }
E_COMPILE_ERROR: final only for methods/classes/constants
prints compiled, child override + write succeed
PHP_COMPILER_PROFILE=8.4: same + ReflectionProperty::isFinal()
isFinal=1
isFinal=0
PHP_COMPILER_PROFILE=8.4: class B extends A { public string $x = "b"; }
Stopped without claiming — do not steal from other lanes / automation owners. Next useful Lane A language ticket: file or relabel an implementation-readyphase-2:language issue with number % 3 == 0.
Fix:inheritFromParent now rejects child redeclaration of a parent staticPropertyFinal across eval (same Zend message as instance finals). Same-script compile was already covered by FinalPropertyOverrideCheck.
Worker lane A follow-up — Pillar 1 patch apply fixed
After the empty-queue note: master was red on apply-patches / north-star5-verify-fast because #24988’s php-vendor-implicit-nullable-84.patch hunks did not match post-overlay vendor.
Activity
PurHur commentedon Jul 29, 2026
Maintainer gate note (2026-07-29) — #10533 comments locked
Could not paste onto #10533 (2500+ comment lock). Snapshot from this maintainer run:
docker info--check/ release-readiness on #24985 treeOK 6638/6638,user_release_ready: yescheck-helper-runtime-prelink.php --stricton tip after later merges298 fresh, 1 stale(ParseUrlJitHelper)9e6b9c12a(43d); restamp warning onlySibling filings this run: #24993 (opcache name), #24994 (pgsql phantom), #24995 (adoptNode 8.2 NYI gating). PR #24988 left open — vendor patch fails
git apply --check.PurHur commentedon Jul 29, 2026
claim: Lane C implementer — starting this run
Gate probe (pre-claim):
PurHur commentedon Jul 29, 2026
Worker lane A — no eligible claim this run (2026-07-29)
Gate snapshot (local Docker, not GHA):
php script/bootstrap-inventory.php --checkmake north-star5-verify-fastunverified-restampwarning only; VM driver probe OK via prelinked seed./script/release-readiness.sh --jsonphp-vendor-implicit-nullable-84)Lane A eligibility scan (
n % 3 == 0, preferlanguage)implementation-ready+phase-2:language: only Language: final plain properties still accepted on reference profile — Zend compile fatal; PROFILE=8.4 isFinal/override broken (re-#24686, Zend/zend_compile.c) #24992 — lane C (24992 % 3 == 2); not claimed (would steal).implementation-readyitems are almost allstdlib+ext/standard(STD Lib owner) or namedext/*(Ext DOM/XML or I/O&Crypto owners), or meta (Strategic alignment: compiler excellence pillars (2026 H2) #10533 / 🗺️ ROADMAP: Self-host + web-capable PHP subset (living) #78 / Parity backlog snapshots).release claim: already green— skipped.Stopped without claiming — do not steal from other lanes / automation owners. Next useful Lane A language ticket: file or relabel an
implementation-readyphase-2:languageissue withnumber % 3 == 0.Language: reject eval override of final static properties (#24992) (#…
PurHur commentedon Jul 29, 2026
Merged #25007.
Fix:
inheritFromParentnow rejects child redeclaration of a parentstaticPropertyFinalacross eval (same Zend message as instance finals). Same-script compile was already covered byFinalPropertyOverrideCheck.Verified:
PurHur commentedon Jul 29, 2026
Worker lane A follow-up — Pillar 1 patch apply fixed
After the empty-queue note: master was red on
apply-patches/north-star5-verify-fastbecause #24988’sphp-vendor-implicit-nullable-84.patchhunks did not match post-overlay vendor.Merged #25008 — regenerated Func/Property/Parser context hunks.
Verified:
script/apply-patches.sh×2 (apply + skip idempotent)make north-star5-verify-fast→ OK (fast)Lane A still has no eligible
phase-2:languageimplementation-readyticket (n%3==0); #24992 remains lane C.