Skip to content

Stdlib: AOT Locale::canonicalize / locale_canonicalize (#20760)#20762

Merged
PurHur merged 1 commit into
masterfrom
agent/stdlib-20760-locale-canonicalize-aot
Jul 19, 2026
Merged

Stdlib: AOT Locale::canonicalize / locale_canonicalize (#20760)#20762
PurHur merged 1 commit into
masterfrom
agent/stdlib-20760-locale-canonicalize-aot

Conversation

@PurHur

@PurHur PurHur commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Extend LocaleParserJitHelper / JitLocaleParser / LocaleParser with canonicalize ABI (PHP-in-PHP, no new C).
  • Register locale::canonicalize JIT proxy so user-script AOT does not ExternalMethod-null-stub.
  • Wire locale_canonicalize() + LocaleCanonicalize::call() to the helper path.

php-src: ext/intl/locale/locale_methods.c (locale_canonicalize)
Follow-up to #20738 / #20750 (VM landed; AOT was still stubbed).

Closes #20760

Test plan

  • PHP_COMPILER_PROFILE=8.4 PHP_COMPILER_HELPER_RUNTIME_O=0 php bin/compile.php -o /tmp/r test/repro/issue_20760_locale_canonicalize_aot.php && /tmp/rcanon=en_US / proc=en_US / ok (exit 0)
  • vendor/bin/phpunit --filter "locale_canonicalize_parse|LocaleParserRuntimeShrink" → OK (5 tests)
  • php script/bootstrap-inventory.php --check → OK 5818/5818; check-generated-docs OK

Verification transcript

canon=en_US
canon_case=en_US
proc=en_US
ok
run_rc:0
OK (5 tests, 15 assertions)
OK 5818/5818

Made with Cursor

Register locale::canonicalize proxy and extend LocaleParser bridge so
user-script AOT no longer ExternalMethod-stubs or throws on locale_canonicalize.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur force-pushed the agent/stdlib-20760-locale-canonicalize-aot branch from 366cac0 to 8e65001 Compare July 19, 2026 00:39
@PurHur
PurHur merged commit 81e59f5 into master Jul 19, 2026
@PurHur
PurHur deleted the agent/stdlib-20760-locale-canonicalize-aot branch July 19, 2026 00:39
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: Locale::canonicalize()/locale_canonicalize() AOT returns null stub (ext/intl, follow-up #20738)

1 participant