t27c suite --repo-root . cannot complete on a clean checkout. Phase 1 (Parse) stalls on the large generated wave-loop benchmark specs under specs/scratch/.
Not a regression — reproduced identically on the pre-#1775 compiler and on current master.
Measured parse scaling
| lines |
parse time |
| 3,114 |
0.23s |
| 4,629 |
0.55s |
| 9,237 |
1.18s |
Roughly quadratic: ~3x the lines costs ~5x the time.
Consequence
specs/scratch/ holds 329 specs totalling 12,364,121 lines. The largest:
| lines |
file |
| 1,179,669 |
w584_bench_17d_aos_call_dedup.t27 |
| 786,483 |
w590_bench_module_17d_aos_var_call_reassign.t27 |
| 786,479 |
w591_bench_module_17d_aos_var_literal_reassign.t27 |
| 589,845 |
w582_bench_16d_aos_call_dedup.t27 |
| 491,567 |
w593_bench_module_5x2p15_aos_var_call_write.t27 |
Extrapolating the quadratic fit, w584 alone is on the order of hours for a single parse. Observed directly: w593 (491,567 lines) ran >30s without finishing; w595 (221,223 lines) ran >60s without finishing.
The suite spawns one t27c parse subprocess per file, so a full run is effectively unbounded. --fast does not help — its help text notes parse/typecheck/gen still run.
Impact
Contributors cannot use ./scripts/tri test or t27c suite as the documented local CI-like gate (CLAUDE.md section 2). Work has to fall back to partial verification.
Workaround in use
Running the suite against a mirror of the repo root whose specs/ omits scratch/ completes in minutes over the remaining 560 specs and exercises every phase (parse, typecheck, GF16, gen zig/rust/verilog/C, yosys smoke, FPGA smoke, seal, fixed-point).
Possible directions
- Profile the parser for the quadratic factor — likely a repeated linear scan over accumulated state per declaration.
- And/or give
suite a flag to exclude specs/scratch/ (or sample it), so the default local run is usable.
Aside
That same filtered run reports 8 pre-existing gen-verilog-yosys-smoke failures on current master (e.g. igla/race/backend.t27, igla/race/rtl.t27, igla/coder/weights.t27). Unrelated to parse; filing here only so they are on record.
t27c suite --repo-root .cannot complete on a clean checkout. Phase 1 (Parse) stalls on the large generated wave-loop benchmark specs underspecs/scratch/.Not a regression — reproduced identically on the pre-#1775 compiler and on current
master.Measured parse scaling
Roughly quadratic: ~3x the lines costs ~5x the time.
Consequence
specs/scratch/holds 329 specs totalling 12,364,121 lines. The largest:w584_bench_17d_aos_call_dedup.t27w590_bench_module_17d_aos_var_call_reassign.t27w591_bench_module_17d_aos_var_literal_reassign.t27w582_bench_16d_aos_call_dedup.t27w593_bench_module_5x2p15_aos_var_call_write.t27Extrapolating the quadratic fit,
w584alone is on the order of hours for a singleparse. Observed directly:w593(491,567 lines) ran >30s without finishing;w595(221,223 lines) ran >60s without finishing.The suite spawns one
t27c parsesubprocess per file, so a full run is effectively unbounded.--fastdoes not help — its help text notes parse/typecheck/gen still run.Impact
Contributors cannot use
./scripts/tri testort27c suiteas the documented local CI-like gate (CLAUDE.md section 2). Work has to fall back to partial verification.Workaround in use
Running the suite against a mirror of the repo root whose
specs/omitsscratch/completes in minutes over the remaining 560 specs and exercises every phase (parse, typecheck, GF16, gen zig/rust/verilog/C, yosys smoke, FPGA smoke, seal, fixed-point).Possible directions
suitea flag to excludespecs/scratch/(or sample it), so the default local run is usable.Aside
That same filtered run reports 8 pre-existing
gen-verilog-yosys-smokefailures on currentmaster(e.g.igla/race/backend.t27,igla/race/rtl.t27,igla/coder/weights.t27). Unrelated to parse; filing here only so they are on record.