Repository navigation
t27c frontier fills the gen-hash cache with parallel workers before deciding -- a cold walk 16.5 s -> 7.3 s (Closes #8846) - #8847
Merged
Conversation
…eciding -- a cold walk 16.5 s -> 7.3 s (Closes #8846) Hot reload H10 of #8737. The H1 key holds the t27c binary's bytes, so after every rebuild of t27c -- and on every CI run, where spec-guards runs `frontier --list` on the base -- frontier regenerated all four backends of every spec, one at a time. The four lines that read, compute and store a spec's gen hashes move out of decide(), unchanged, into gen_cached(). Before the decision walk, par_in_order (suite_jobs() workers, 8 MiB stacks, #8845) calls gen_cached for every spec; decide() then finds every entry. decide(), the key and gen_cache_use/gen_cache_store are unchanged; compute_seal_hashes writes no file and spawns no process. Measured on this Mac (load ~7), each run with its own empty HOME: T27_SUITE_JOBS=1 16.5 s, default 7.3 s, `frontier --list` output identical, 1861 cache entries both; warm rerun 1.4 s, identical. Paid for by deleting scripts/gen_w364_lean.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
October 10, 2026 22:49
Contributor
This was referenced Oct 10, 2026
Closed
gHashTag
added a commit
that referenced
this pull request
Oct 11, 2026
…ebuild, suite, caches (Closes #8952) (#8953) The owner asked for every speed-up in the tri CLI. Each sat behind a different t27c subcommand and flag; `tri hot` (#8872) only timed them. tri hot <action>, the command strings constants in specs/tri/hot/hot.t27: check (default) the timing check of #8872 watch t27c frontier --watch (#8751, #8825, #8856) frontier t27c frontier --list, ~1 s warm (#8741, #8847) prebuild t27c silicon <spec> --top <v> [...] --skip-hardware: the bitstream into the reuse cache, no cable (#8797) suite t27c suite --repo-root . --fast --corpus-only, every per-spec phase in parallel (#8837-#8845) caches each cache under ~/.cache/t27 with its eviction limit, read from gen_hash_cache.rs and bitstream_reuse.rs (#8928, #8933) Checked on this Mac: check OK/OK; caches lists genhash 2 groups (keeps 3 binaries), bitstreams 5 (keeps 32), digests 7; frontier prints its summary; prebuild of ternary_link reads REUSED; watch starts the watch; suite runs (376 s on a busy machine, TOTAL FAILURES 259, exit 1 passed through as the suite's own). main.rs +32 -2, paid for by deleting scripts/gen_w371_lean.py (-178). Co-authored-by: Claude <claude@anthropic.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hot reload H10 of #8737, epic #8095. Builds on H1 (#8741) and the suite pool (#8837, #8840, #8845).
Why
frontier --liston the base,t27c frontierregenerated all four backends of every spec, one at a time.What
decide(), unchanged, intogen_cached(p, tc).decide()calls it.par_in_ordercallsgen_cachedfor every spec, withsuite_jobs()workers on 8 MiB stacks.decide()then finds every entry.decide(), the cache key andgen_cache_use/gen_cache_store.compute_seal_hasheswrites no file and spawns no process. The compiler keeps no global state but an atomic key counter (audited in t27c suite: run the in-process phases 1a2-1a7 through the parallel pool, workers on an 8 MiB stack (#8838 follow-up) #8841).gen_hash_cache.t27andsuite_jobs.t27name the warm-up; both are resealed (2/2 and 3/3 tests). Their generated Rust is unchanged.par_in_orderbecomespub(crate)). The budget is paid for by deletingscripts/gen_w364_lean.py.Measured on this Mac (load ~7)
Each cold run used its own empty
HOME, so the cache started empty:frontier --listT27_SUITE_JOBS=1Gates: gitleaks clean, only-t27 gate 0, budget 0,
tri seals driftclean after the final rebase, with a binary rebuilt from that tree.🤖 Generated with Claude Code