Skip to content

mbstring: mb_ucwords() on PHP 8.4 forward profile (#21394) - #21407

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-21394-mb-ucwords
Jul 20, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-21394-mb-ucwords

Conversation

@PurHur

@PurHur PurHur commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add mb_ucwords() in ext/mbstring/mb_ucwords.php, delegating to VmMbstring::ucwords() (MB_CASE_TITLE, same path as mb_convert_case).
  • Gate registration and function_exists() on CompilerVersion::supportsMbUcwords() / advertisesMbUcwords() (8.4 forward profile, aligned with mb_trim).
  • Compliance repro + PHPT guards; spine/inventory sync for ext/mbstring/mb_ucwords.php.

Closes #21394

Test plan

  • PHP_COMPILER_PROFILE=8.4 php bin/vm.php test/repro/maintainer_gap_mb_ucwords_missing_forward84.phpmb_ucwords=yes / Hello World
  • PHP_COMPILER_PROFILE=8.4 ./vendor/bin/phpunit test/compliance/VMTest.php --filter mb_ucwords → OK (2 tests)
  • ./vendor/bin/phpunit test/compliance/VMTest.php --filter mb_ucwords → phantom OK on reference profile
  • ./vendor/bin/phpunit test/unit/CompilerVersionGateTest.php --filter MbUcwords → OK
  • php script/check-selfhost-spine-coverage-sync.php → OK
  • php script/bootstrap-inventory.php --check → OK 6162/6162
  • make bootstrap-selfhost-vm-driver-execute-probe → OK

Made with Cursor

Register mb_ucwords as MB_CASE_TITLE over the full string so PROFILE=8.4 matches Zend function_exists and title-case behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit cf5d177 into master Jul 20, 2026
1 check failed
@PurHur
PurHur deleted the agent/issue-21394-mb-ucwords branch July 20, 2026 09:53
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.

Stdlib: mb_ucwords() still missing on PROFILE=8.4 (re-#20799, ext/mbstring/mbstring.c)

1 participant