## Category `php-in-php` · runtime-shrink (#1492, peer #21342 / #13448) ## Problem `lib/JIT/Builtin/StringSoundex.php` still uses hand-rolled `NestedJitCompileScope::run` + `parseAndCompile` + `new JIT()` (~90 LOC). `#21342` migrated `StringMetaphone` to `JitVmHelperLink::ensureBridge` (HelperRuntimeCache + user-script env clear). ## php-src reference - [php/php-src ext/standard/string.c](https://github.com/php/php-src/blob/master/ext/standard/string.c) — `PHP_FUNCTION(soundex)` ## PHP implementation target - `lib/JIT/Builtin/StringSoundex.php` — `JitVmHelperLink::ensureBridge` (drop hand-rolled NestedJIT loop) - `test/unit/SoundexRuntimeShrinkTest.php` — guard `ensureBridge`, no `parseAndCompile` / `new JIT(` ## Repro ```bash ./script/docker-exec.sh -- bash -lc 'source script/php-env.sh vendor/bin/phpunit test/unit/SoundexRuntimeShrinkTest.php ' ``` ## Done when - [ ] `StringSoundex` uses `JitVmHelperLink::ensureBridge` only - [ ] `SoundexRuntimeShrinkTest` green; no hand-rolled NestedJIT in StringSoundex - [ ] Self-host spine still lists SoundexJitHelper + StringSoundex
Activity
PurHur commentedon Jul 20, 2026
claim: PHP Runtime → PHP — starting this run (StringSoundex → JitVmHelperLink::ensureBridge, peer #21342).
PurHur commentedon Jul 20, 2026
Merged via #21363.
Verification:
vendor/bin/phpunit test/unit/SoundexRuntimeShrinkTest.php— OK (3 tests)vendor/bin/phpunit test/unit/MetaphoneRuntimeShrinkTest.php— OK (peer regression)make bootstrap-selfhost-vm-driver-execute-probe— OKStringSoundex now uses JitVmHelperLink::ensureBridge only (−71 LOC hand-rolled NestedJIT).
php-in-php: route StringSoundex through JitVmHelperLink::ensureBridge (…