Skip to content

Stdlib: IntlListFormatter on PROFILE=8.5 (#23229)#23250

Merged
PurHur merged 2 commits into
masterfrom
agent/issue-23229-intl-list-formatter
Jul 26, 2026
Merged

Stdlib: IntlListFormatter on PROFILE=8.5 (#23229)#23250
PurHur merged 2 commits into
masterfrom
agent/issue-23229-intl-list-formatter

Conversation

@PurHur

@PurHur PurHur commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Implements IntlListFormatter (PHP 8.5) via ICU ulistfmt_* FFI in ext/intl/VmIntlListFormatter.php — php-src ext/intl/listformatter/
  • Gates on host extension_loaded('intl') and PHP_COMPILER_PROFILE≥8.5 (no phantom class_exists)
  • Compliance + unit + repro; serialize denied; inventory/spine synced

Test plan

  • Host (intl loaded): PHP_COMPILER_PROFILE=8.5 php bin/vm.php test/repro/maintainer_gap_intl_list_formatter_85.phpA, B, and C
  • Host: PHP_COMPILER_PROFILE=8.2 php bin/vm.php test/repro/maintainer_gap_intl_list_formatter_absent.php → class withheld
  • Host: php -d memory_limit=1536M vendor/bin/phpunit --filter 'VmIntlListFormatterTest|intl_list_formatter' → OK (5 tests)
  • Docker: inventory OK 6562/6562 + spine coverage sync OK; list-formatter PHPTs skip without host intl
  • intl_phantom_classes.phpt includes intllistformatter=0

Closes #23229

Verification transcript (host)

$ PHP_COMPILER_PROFILE=8.5 php bin/vm.php test/repro/maintainer_gap_intl_list_formatter_85.php
class=1
format=A, B, and C
format2=A, B, and C
ok

$ PHP_COMPILER_PROFILE=8.2 php bin/vm.php test/repro/maintainer_gap_intl_list_formatter_absent.php
class=0
ok

$ php -d memory_limit=1536M vendor/bin/phpunit --filter 'VmIntlListFormatterTest|intl_list_formatter'
OK (5 tests, 11 assertions)

php-src ref: ext/intl/listformatter/listformatter.stub.php / listformatter_class.cpp (GH-18519).
No new runtime/*.c logic.

Made with Cursor

Add PHP-in-PHP IntlListFormatter via ICU ulistfmt_* FFI, gated on host
php-intl and language profile ≥8.5, matching php-src listformatter.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve bootstrap-inventory.md by regenerating after taking master.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 9ae3f30 into master Jul 26, 2026
1 check failed
@PurHur
PurHur deleted the agent/issue-23229-intl-list-formatter branch July 26, 2026 00:50
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: IntlListFormatter missing on PROFILE=8.5 — locale list formatting (ext/intl/listformatter)

1 participant