Category
Regression: · closed-but-not-done, the interpreter · child of #36379
Problem (master 1edb103c34, pinned image, source script/php-env.sh so the new opcache flags apply)
|
2026-09-01 |
2026-09-02 |
Zend |
php bin/vm.php hello.php |
1.15 s |
0.99 s |
0.05 s |
1M-iteration for loop |
207.6 s |
218.4 s |
0.01 s |
fibo(30) |
> 300 s |
> 300 s |
0.13 s |
#36207 closed via three PRs ("skip opcode-loop preamble work on hot paths", "storage reverse-index, argRecv cache", "memoize Block scope-slot lookups at runtime") whose combined effect on the issue's own probe is zero (within noise). #36206 closed with the opcache flag (1.15 → 0.99 s) — the lazy registration of 2,629 builtin objects, the harness spawn changes and the stream_select drain were not delivered. The compliance suite is therefore still ~4 h, and the VM is still unusable as a benchmark or fuzzing oracle.
PHP implementation target
Profile before touching code: php -d opcache.enable_cli=1 -r with pcntl_alarm sampling (the recipe in docs/AGENT-HANDOVER-2026-08-17.md) on the 1M loop; the top frames must be named in the PR. The audit's candidates remain: Block::isNamedVariableSlot/operandForScopeSlot per operand per op (lib/Block.php:1260/:1555), Context::globalNameForStorage per slot write (lib/VM/Context.php:877), MemoryAccounting::noteBytes getenv per string write, the per-op preamble (lib/VM.php:4640-4659), frame-per-block (Block::getFrame). Acceptance is the probe, not the PR count.
Done when
Category
Regression:· closed-but-not-done, the interpreter · child of #36379Problem (master
1edb103c34, pinned image,source script/php-env.shso the new opcache flags apply)php bin/vm.php hello.phpforloopfibo(30)#36207 closed via three PRs ("skip opcode-loop preamble work on hot paths", "storage reverse-index, argRecv cache", "memoize Block scope-slot lookups at runtime") whose combined effect on the issue's own probe is zero (within noise). #36206 closed with the opcache flag (1.15 → 0.99 s) — the lazy registration of 2,629 builtin objects, the harness spawn changes and the
stream_selectdrain were not delivered. The compliance suite is therefore still ~4 h, and the VM is still unusable as a benchmark or fuzzing oracle.PHP implementation target
Profile before touching code:
php -d opcache.enable_cli=1 -rwithpcntl_alarmsampling (the recipe indocs/AGENT-HANDOVER-2026-08-17.md) on the 1M loop; the top frames must be named in the PR. The audit's candidates remain:Block::isNamedVariableSlot/operandForScopeSlotper operand per op (lib/Block.php:1260/:1555),Context::globalNameForStorageper slot write (lib/VM/Context.php:877),MemoryAccounting::noteBytesgetenvper string write, the per-op preamble (lib/VM.php:4640-4659), frame-per-block (Block::getFrame). Acceptance is the probe, not the PR count.Done when
fibo(30)< 60 s underbin/vm.php(numbers pasted); boot < 0.3 s with lazy registrationscript/compliance-baseline.sh --diff --suite=VMTestno regressions; serial VMTest wall time recorded before/after