game compilation benchmark: 21811 source lines
  symta: <repo>/symta/symta.exe
  game:  <repo>/game

[cold]  20-23 s   121 modules   rc=0   (warm-cache band: 20.65 /
                                        22.20 / 23.03 s; cold-FS
                                        outliers can hit 42-50 s
                                        under Defender)

[warm]  0.13-0.25 s   0 modules recompiled   rc=0

# Machine: w64devkit gcc 12.2.0 / Win64 / Intel i7-12700H class.
# Captured at commit a341309 ("register _.>< / _.<> as direct C
# builtins").  Two perf wins combined:
#
#   1. Reader consolidation (commit 2129767): the C reader is the
#      production parser, with meta wrapping via direct OBJECT()
#      allocation in C.  Was 38-40 s by itself.
#   2. C-side identity comparators (commit a341309): `_.><` and
#      `_.<>` are runtime builtins doing raw dyn equality, not
#      Symta-side closures chaining MCALLs.  Took cold from
#      38-40 s to 20-23 s -- another ~45% reduction.
#
# Combined: ~2.5x faster than the pre-consolidation 51-54 s
# baseline at commit 0b9e2c4.
#
# vs the previous baseline (51-54 s at commit 0b9e2c4):
#   - the C reader is genuinely faster than the Symta-side parser;
#     cold compile is ~25% lower despite parsing the same input
#   - we briefly hit 90-120 s after Phase 5 routed through a weak
#     hashtable for source-position lookup; reverting to the
#     wrapper-meta type plus C-side `OBJECT(meta_tag, 2)`
#     allocation in reader_parse_strip was the fix
#
# What to watch:
#   - Cold should stay within ~10% of this band.  A jump means a
#     compiler / macroexpander / sif2sbc / sbc-load slowdown
#     somewhere; bisect by reverting the suspect change.
#   - Warm should stay under 0.50 s.  A regression here typically
#     means an sbc-load or dep-walk got expensive (e.g. linear
#     scans where a hash existed before).
