You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Always-on LibcExtern still registers libc strtod(3) even though:
User-script floatval() / doubleval() / is_numeric() already live in ext/standard PHP (string-to-float parse uses libc strtod only as a NestedJIT trampoline, not as a user-visible builtin).
~12 NestedJIT leaves call lookupFunction('strtod') for compile-time numeric parse (scalar cast, filter tokens, min/max, array_unique, typed params, web params) — they rely on the always-on row.
Category
php-in-php· runtime-shrink (#1492, peer #31988 strtol / #31971 strcmp)Problem
Always-on
LibcExternstill registers libcstrtod(3)even though:floatval()/doubleval()/is_numeric()already live inext/standardPHP (string-to-float parse uses libcstrtodonly as a NestedJIT trampoline, not as a user-visible builtin).lookupFunction('strtod')for compile-time numeric parse (scalar cast, filter tokens, min/max, array_unique, typed params, web params) — they rely on the always-on row.ext/standard/Module.phpjitInitstill always-declaresstrtodas a fallback — that path should drop with the LibcExtern row (peer php-in-php: drop always-on LibcExtern strtol after NestedJIT module-local (#31971 shape) #31988 strtol).ext/standardPHPLibcExternstrtodrowLibcExtern::ensureStrtodDecl()before lookupModule::jitInitphp-src reference
Zend/zend_operators.c—is_numeric_string/zend_strtodext/standard/type.c—PHP_FUNCTION(floatval)PHP implementation target
lib/JIT/LibcExtern.php— drop'strtod'always-on row; addensureStrtodDecl()LibcExtern::ensureStrtodDecl()beforelookupFunction('strtod')ext/standard/Module.php— drop always-on strtodjitInitfallbacktest/unit/LibcExternDeadDeclsRuntimeShrinkTest.php+StrtodRuntimeShrinkTest— assert row gone + consumer wiringRepro
Done when
LibcExternhas no always-on'strtod' =>rowlookupFunction('strtod')sites callensureStrtodDecl()firstLibcExternDeadDeclsRuntimeShrinkTest+ shrink guard green