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
When ext/intl is not loaded, Zend reports function_exists('grapheme_str_split') as false. This compiler registers the grapheme helper unconditionally, so function_exists is true and callers invoke stub/ICU-less behavior.
Fix:grapheme_str_contains / grapheme_strimwidth now use IntlExtensionPolicy::advertisesBuiltins() for function_exists() — same gate as other grapheme_* helpers. Forward-profile registration stays callable; introspection matches Zend (no phantom intl surface without ext/intl).
Verification:maintainer_gap_grapheme_str_split_without_intl.php → ok: absent; VM compliance grapheme_phantom + grapheme_profile_84 green; AOT -l on repro + grapheme_strimwidth_literals.php exit 0.
Activity
chore: drop stale maintainer_gap repros for closed parity issues (jun…
PurHur commentedon Jun 29, 2026
claim: worker-lane-c — batch (issues #13748, #11825, #11551)
PurHur commentedon Jun 29, 2026
claim released: worker-lane-c — already green on master (2026-06-29).
Recommend close — IntlExtensionPolicy already withholds grapheme/intl_* symbols when ext/intl is not loaded.
PurHur commentedon Jul 6, 2026
claim: PHP Compiler STD Lib — starting this run
Gate grapheme_str_contains/strimwidth on ext/intl for function_exists (…
PurHur commentedon Jul 6, 2026
Merged via #16966.
Fix:
grapheme_str_contains/grapheme_strimwidthnow useIntlExtensionPolicy::advertisesBuiltins()forfunction_exists()— same gate as other grapheme_* helpers. Forward-profile registration stays callable; introspection matches Zend (no phantom intl surface without ext/intl).Verification:
maintainer_gap_grapheme_str_split_without_intl.php→ok: absent; VM compliancegrapheme_phantom+grapheme_profile_84green; AOT-lon repro +grapheme_strimwidth_literals.phpexit 0.chore: drop 24 more stale maintainer_gap repros (wave30 batch 2, #16660…