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
Foundation: · compiler throughput program · child of #36379
Why
Audit numbers (2026-09-01): hello-world 17 s warm (README says 6), MiniWebApp did not compile, Compiler::compile ~n^2.65 (200 statements = 412 s; #36224 "slice 1" landed with the note "still ~n^2.6"), no incremental builds (#36199 landed the module cache only), gen-0 ≈ 4.6 h. Nobody will iterate on a compiler that takes 17 s for echo. Compile time needs the same treatment runtime got: targets, a gate, history.
Deliverable
script/bench-gate.php --compile: wall time and peak RSS for hello, MiniWebApp, lib/Block.php (-l), the 50/100/200/400-statement scaling probe, and a one-file-edit rebuild of MiniWebApp; baseline JSON per release; thresholds 20 %.
PHP_COMPILER_BUILD_TIMING=json phase report (boot / parse / lower / opt / codegen / link) in every build with --verbose, and in the gate output.
Category
Foundation:· compiler throughput program · child of #36379Why
Audit numbers (2026-09-01): hello-world 17 s warm (README says 6), MiniWebApp did not compile,
Compiler::compile~n^2.65 (200 statements = 412 s; #36224 "slice 1" landed with the note "still ~n^2.6"), no incremental builds (#36199 landed the module cache only), gen-0 ≈ 4.6 h. Nobody will iterate on a compiler that takes 17 s forecho. Compile time needs the same treatment runtime got: targets, a gate, history.Deliverable
script/bench-gate.php --compile: wall time and peak RSS for hello, MiniWebApp,lib/Block.php(-l), the 50/100/200/400-statement scaling probe, and a one-file-edit rebuild of MiniWebApp; baseline JSON per release; thresholds 20 %.PHP_COMPILER_BUILD_TIMING=jsonphase report (boot / parse / lower / opt / codegen / link) in every build with--verbose, and in the gate output.Compiler::compileis super-quadratic (~n^2.65) in statements per block — 200 call statements take 412 s;compileCallArgSendsruns 13 backward-scan matchers per call (lib/Compiler.php:49687) #36224: def-use resolution forcompileCallArgSends(slice 2, "ensureDeferredSibling ordinals"), measured flat ms/statement.phpc buildre-lowers all files as one bundled TU andPHP_COMPILER_CACHE=0is forced (bin/compile.php, lib/Web/SourceBundler.php, lib/JIT/CompileCache.php) #36199: per-file object cache + parallel emit; measured one-file-edit rebuild.Runtimeconstruction, lazy extension registration — each with a before/after phase report.Done when
docs/pages/bench.html