Skip to content

Measure 11.46x faster warm native compilation with complete replay - #2414

Merged
Mister-Meeseeks merged 1 commit into
CrocSwap:mainfrom
bitplane:research/pass47-random
Oct 16, 2026
Merged

Mister-Meeseeks merged 1 commit into
CrocSwap:mainfrom
bitplane:research/pass47-random

Conversation

@bitplane

Copy link
Copy Markdown
Contributor

Repeated compilation dominates this native nine-stage checker fixture: the unchanged GCC build takes seconds while both complete native word checks take milliseconds. This opt-in experiment uses ccache object reuse, fresh linking and fresh native execution, reducing the measured local build-and-replay median from 2.753 s to 0.240 s (11.46×). A fresh cache fill takes 2.942 s; this is a repeat-build benefit, not a whole selected-replay or first-use speedup.

The source engine is unchanged research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp, pinned with its JSON header and upstream notice. The two exact RAW6 fixtures come from our #2373 at b52f87f5355ad9f02ca4ac4395117655ac1b19c7 (the #1188 baseline and Sagar Thakrar's #2115 deferred-undo word). Every timed sample runs all 1,327 columns, nine stages, signed-prefix bills and 18 omitted-bridge controls per word. All native receipt fields compare, except elapsed time and the exact input path after binding it to the complete consumed payload hash. Reference and cached object hashes agree within each run.

Ccache preprocessor mode uses content-based compiler checks, no sloppiness/remote storage and a fresh toolchain-content profile. Source and transitive-header changes preserving both size and mtime cause misses and mathematical rejection. Compile-option and profile changes cause misses; restored inputs hit; a corrupt private cache entry is rebuilt. A wrong word still fails after a hit. The seven actual controls run through the compiler/cache/executable chain.

Validation performed:

  • Three interleaved uncached/warm timing pairs and one separate fill, GCC 15.2 / Boost 1.90 / ccache 4.12.3.
  • Full experiment: 13 builds, 24 native executions (21 positive, three deliberate mathematical rejections), including 384 omitted-bridge controls in successful executions.
  • Registered Python 3.12 replay: independent bitset checks of every dirty column and exact prefix bills, plus nine package control groups.
  • Full optimized Python 3.14 experiment and nine groups from a Git-free read-only 18-file execution snapshot: all normalized native results identical, snapshot unchanged; medians 2.761 s / 0.241 s.
  • Metadata/pins pass. A scoped workflow executes the actual native benchmark; no hosted CI success is claimed.

BENCHMARK.json records individual measurements, cache counters, commands and execution hashes. The standard registered command intentionally performs Python/input checks only; README gives the separate full native command. No production entry point, frozen source, selected certificate or kappa changes. Complete PR2373 legality/exporter/5/9/11-stage integration and production end-to-end timing remain open.

One fresh random draw selected verifier-engineering / replay-runtime / source-bound reuse, refined to this one measured boundary without rerolling. Canonical main remains 0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2, priority revision 4. Final overlap covered 617 open PRs and 1,140 Discussion records with complete pagination and no warnings. Coordination: #2408.

Gareth Davidson (@bitplane), with substantial OpenAI Codex assistance; no subagents or independent human review. Native checker lineage (DaysSky, Dylan Crow and predecessor cohort work), Sagar Thakrar's construction and ccache's existing implementation are credited in NOTICE.md. This is a measured integration experiment, not a new cache algorithm or mathematical construction.

@Mister-Meeseeks
Mister-Meeseeks merged commit 1c1de25 into CrocSwap:main Oct 16, 2026
56 of 63 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants