Category
Regression · php-src-strict · AOT · pillar 4
Problem
VM/JIT stream_isatty(STDOUT) match Zend (false for non-TTY / harness). Thin AOT fails to link with undefined __compiler_stream_isatty — the symbol is declared in lib/JIT/Builtin/Type.php / JitStreamIsatty but not emitted into the linked object under helper-runtime cache. Prior #6035 closed VM registration only. Probed 2026-08-04 @ 4639761bd.
| Repro |
Zend / VM / JIT |
AOT (phpc build) |
stream_isatty(STDOUT) |
false (non-TTY) |
link error: undefined reference to __compiler_stream_isatty |
php-src reference
PHP implementation target
- Ensure
__compiler_stream_isatty body is emitted/linked for thin AOT (ext/standard/StreamCapsJitHelper.php, JitStreamIsatty.php, lib/JIT/Builtin/StreamCaps*.php) — PHP-in-PHP; no new runtime/*.c
- Prefer fixing helper-runtime / NestedJIT registration so the declared LLVM symbol has a real definition
Repro
./script/docker-exec.sh -- bash -lc '
cat > /tmp/isatty.php <<'"'"'PHP'"'"'
<?php
var_export(stream_isatty(STDOUT));
echo "\n";
PHP
php bin/vm.php /tmp/isatty.php
php bin/jit.php /tmp/isatty.php
php bin/compile.php -o /tmp/isatty.bin /tmp/isatty.php
'
Done when
Gate context (same machine, 2026-08-04)
Category
Regression· php-src-strict · AOT · pillar 4Problem
VM/JIT
stream_isatty(STDOUT)match Zend (falsefor non-TTY / harness). Thin AOT fails to link with undefined__compiler_stream_isatty— the symbol is declared inlib/JIT/Builtin/Type.php/JitStreamIsattybut not emitted into the linked object under helper-runtime cache. Prior #6035 closed VM registration only. Probed 2026-08-04 @4639761bd.phpc build)stream_isatty(STDOUT)false(non-TTY)__compiler_stream_isattyphp-src reference
ext/standard/streamsfuncs.c—PHP_FUNCTION(stream_isatty)/php_stream_isattyext/standard/basic_functions.stub.php—stream_isattyPHP implementation target
__compiler_stream_isattybody is emitted/linked for thin AOT (ext/standard/StreamCapsJitHelper.php,JitStreamIsatty.php,lib/JIT/Builtin/StreamCaps*.php) — PHP-in-PHP; no newruntime/*.cRepro
Done when
STDOUT/php://memory(non-TTY →false)stream_isatty(null)catchableTypeErrorunder AOT (same message as VM)runtime/Gate context (same machine, 2026-08-04)
user_release_ready: no(stale Ceil/Floor helper-runtime +north-star5-fastgen-0 mismatch Self-host M5: bootstrap-inventory argv driver size floor — grow beyond 451KB stub #8713)