Skip to content

Stdlib: AOT iconv_substr via __string__ fold + NestedJIT (#27197) - #27910

Merged
PurHur merged 1 commit into
masterfrom
agent/ext-io-27197-iconv-substr-aot
Aug 5, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/ext-io-27197-iconv-substr-aot

Conversation

@PurHur

@PurHur PurHur commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Summary

Closes #27197

Test plan

  • php bin/vm.php test/repro/issue_27197_iconv_substr_aot.php → bcd / bcd
  • php bin/jit.php test/repro/issue_27197_iconv_substr_aot.php → bcd / bcd
  • ./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php bin/compile.php -o /tmp/iconv27197 test/repro/issue_27197_iconv_substr_aot.php && /tmp/iconv27197' → bcd / bcd
  • vendor/bin/phpunit --filter IconvSubstrRuntimeShrinkTest → OK (4)
  • vendor/bin/phpunit --filter iconv_substr test/aot/ → OK (1)
  • php script/check-selfhost-spine-coverage-sync.php → OK

Not covered: thin AOT NestedJIT with runtime-loaded int offset/length (same class as truly dynamic iconv_mime_decode mode under AOT); call-site integer literals work.

Gate snapshot: release-readiness --json on master tip before this change: user_release_ready: no (north-star5-fast gen-0 manifest/driver mismatch #8713) — pre-existing pillar-1, not this PR.

Made with Cursor

Return boxed __string__*/false instead of constantFromString() (unknown*)
so thin AOT can infer the builtin result, and link runtime via
IconvStringJitHelper NestedJIT for non-foldable string args.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 636fcf6 into master Aug 5, 2026
0 of 2 checks passed
@PurHur
PurHur deleted the agent/ext-io-27197-iconv-substr-aot branch August 5, 2026 21:48
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.

Regression: AOT iconv_substr() compile fails — unknown* JIT type (ext/iconv/iconv.c)

1 participant