chore: bump toolchain to v4.35.0-rc3 - #654
Merged
Merged
Conversation
Follow TauCeti to v4.35.0-rc3. lean-eval downloads TauCeti's published build outputs rather than compiling TauCeti, and Lake only reuses them when this project pins the same toolchain and Mathlib revision as the pinned TauCeti commit, so all three move together: TauCeti to 522706e, Mathlib to the 5e0c4e5 that commit uses, and the toolchain to v4.35.0-rc3. Cli moves to 843844f for the same reason it was pinned at Mathlib's revision before: a project pinning a different Cli than Mathlib makes `lake exe cache get` compute wrong hashes, and it failed to fetch until this was realigned. `generated/` is untouched. The generator reads the root `lean-toolchain` and `regenerate-main.yml` runs on merge to main when that file changes, so the project toolchains follow from the trusted regenerator. `scripts/fetch_dependency_caches.sh --restore .` passes, so TauCeti's outputs are genuinely being reused rather than silently recompiled, and `lake build LeanEval EvalTools` is clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Take Cli transitively from Mathlib rather than pinning it here. It resolves to the same commit, but via Mathlib's own tag, so the two can no longer drift -- which is what broke `lake exe cache get` when Mathlib's Cli moved. Repin lean-eval-generator at the fix for the String API that v4.35.0-rc3 removes. `String.trim` and `String.dropRight` are gone, and because a Lake dependency builds with the root project's toolchain, the `lean-eval` executable would not build at this toolchain without it. `lake build lean-eval` is clean and the three `lake exe lean-eval` validators CI runs all pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The previous commit pinned the branch commit of the v4.35.0-rc3 String API fix; point at the commit that landed on the generator's main instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Five modules pass a coefficient category to `singularHomologyFunctor` or
`singularChainComplexFunctor` and leave its universe to be inferred from the
coefficient object. At v4.35.0-rc3, instance search for
`∀ J, HasColimitsOfShape (Discrete J) C` runs while that universe is still a
metavariable, and searching with one exhausts the 20000 `synthInstance`
heartbeats. Writing the universe the coefficient object already forces --
`ModuleCat.{0} ℝ`, `ModuleCat.{0} ℤ`, `AddCommGrpCat.{0}` -- lets search
succeed immediately.
`HoneycombConnectiveConstant.walkCount_six` reduces a `Decidable` instance over
all `3 ^ 6` direction words. Elaborator reduction now needs 556236 heartbeats,
well over the default 200000, so evaluate in the kernel instead: `decide
+kernel` costs 37538 heartbeats and half the wall time, and no longer needs the
`maxRecDepth` bump.
These modules sit outside the `LeanEval` library target, so only
`lake exe lean-eval check-problem-build` builds them; it now reports the whole
catalog clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
This PR follows TauCeti to v4.35.0-rc3.
lean-eval downloads TauCeti's published build outputs rather than compiling TauCeti, and Lake only reuses them when this project pins the same toolchain and Mathlib revision as the pinned TauCeti commit. So those move together: TauCeti to 522706e83ca349c3d6bde045e56778d17354ae8d, Mathlib to the 5e0c4e5239cb0a2d86d68a884bf52cfd963fce22 that commit uses, and the toolchain to v4.35.0-rc3. That TauCeti commit is the most recent on
mainwhose build had finished, so its outputs are published.The explicit
Clirequire goes away and Cli comes transitively from Mathlib. It was pinned here at exactly Mathlib's revision, so when Mathlib's Cli moved the two disagreed andlake exe cache getcomputed wrong hashes, reportingmathlib: failed to fetch cache. Taking it transitively resolves to the same commit but via Mathlib's own tag, so they cannot drift apart again.lean-eval-generator is repinned at a61cd80bc45b16c4f8f900a15f5c80f32e75aad6, the merge of leanprover/lean-eval-generator#10 "fix: use the String API that survives v4.35.0-rc3". v4.35.0-rc3 removes
String.trimandString.dropRight, and a Lake dependency builds with the root project's toolchain, so without that fix thelean-evalexecutable does not build here even though the generator pins v4.33.0 itself.Six catalog modules need adapting. Five of them pass a coefficient category to
singularHomologyFunctororsingularChainComplexFunctorand leave its universe to be inferred from the coefficient object; at this toolchain, instance search for∀ J, HasColimitsOfShape (Discrete J) Cruns while that universe is still a metavariable, and searching with one exhausts the 20000synthInstanceheartbeats. Each now writes the universe its coefficient object already forces:ModuleCat.{0} ℝ,ModuleCat.{0} ℤ,AddCommGrpCat.{0}. The sixth,HoneycombConnectiveConstant.walkCount_six, reduces aDecidableinstance over all3 ^ 6direction words; elaborator reduction now needs 556236 heartbeats against a default of 200000, so it evaluates in the kernel instead, which costs 37538 heartbeats and half the wall time and no longer needs themaxRecDepthbump.generated/is deliberately untouched.scripts/generate_projects_external.pyreads the rootlean-toolchain, andregenerate-main.ymltriggers on merge to main when that file changes, so the project toolchains follow from the trusted regenerator rather than from a hand edit here.Verification:
scripts/fetch_dependency_caches.sh --restore .passes, which is the check that matters for the pins, since it treats a TauCeti cache miss as an error rather than a silent rebuild.lake exe lean-eval check-problem-buildreports the whole catalog clean aside from the expectedsorrywarnings; that is the run to trust, because the problem modules sit outside theLeanEvallibrary target andlake build LeanEvalnever reaches them.lake build LeanEval EvalToolsandlake build lean-evalare also clean, and the threelake exe lean-evalvalidators CI runs (validate-manifest --structure-only,validate-generated-catalog,validate-submission) all pass.🤖 Prepared with Claude Code