-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Add Lean 4 ecosystem support #13787
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add Lean 4 ecosystem support #13787
Conversation
20f8911 to
2a97748
Compare
c57fa8f to
bd25ba7
Compare
|
I had some trouble with the CI because of rate limiting but it should be OK (many CI actions do pass). |
|
Hi @jessealama, Thank you for the contribution! We probably won't be able to review this PR until the new year. In the meantime, can you let me know if you are associated with the Lean ecosystem in any way? |
No problem! Thanks for taking a look. There's no rush. I'm not associated with the Lean ecosysten in any official way; I'm just an enthusiastic user. Shall I try to get someone with a more official association with Lean to chime in? |
|
@jessealama The issue with adding new ecosystems is long-term support. We're trying to encourage more community ownership of ecosystems. Currently we have 3 community-maintained ecosystems. We're hoping to add more where there's community willingness to support them long-term. If the Lean community is happy to help support their ecosystem updater, then we're happy to add support for it. |
Sounds good. I've set up a discussion in the Lean community (which uses Zulip) to gauge interest and interest in long-term support. I'll check back here in a while. |
bd25ba7 to
951ed88
Compare
e2b8587 to
4985f3f
Compare
4985f3f to
fad05f9
Compare
Add support for updating the Lean 4 toolchain version in lean-toolchain files.
The lean-toolchain file specifies the Lean version in the format:
leanprover/lean4:v{major}.{minor}.{patch}[-rc{n}]
This implementation includes:
- FileFetcher: fetches lean-toolchain files
- FileParser: parses the leanprover/lean4:v{version} format
- UpdateChecker: checks GitHub releases for newer versions
- FileUpdater: updates the version in lean-toolchain
- MetadataFinder: provides Lean repository metadata
- Version/Requirement: handle version comparison with RC support
- Lake package manager support via native helpers
8c74521 to
8d136b3
Compare
|
Hello! Did you get some update from the community @jessealama? |
I asked around and but some initial enthusiasm faded when it was pointed out to me that there's already a Lean-specific GitHub Action whose functionality overlaps with what Dependabot offers, and might potentially offer more features that make sense for Lean and the Lean community's expectations. It also seems that there's relatively little Ruby knowledge among the potential long-term maintainers in the community. I suppose we could close this PR, but I might suggest keeping the associated issue open in case things change. How does that sound? |
What are you trying to accomplish?
Adds Dependabot support for the Lean 4 ecosystem, including:
lean-toolchainfilelake-manifest.json(Lean's package manager lockfile)Closes #13786
What's included?
Lean toolchain support:
lean-toolchainis analogous torust-toolchain.tomlor.ruby-version—a single-line file specifying the compiler/language versionleanprover/lean4:v{version}(e.g.,leanprover/lean4:v4.26.0)leanprover/lean44.27.0-rc1)Lake package manager support:
lake-manifest.jsonis analogous toCargo.lockorpackage-lock.json—a lockfile tracking resolved dependency versionsGitCommitChecker(finds newer commits on tracked branches)lake updatefor dependency resolutionAnything you want to highlight for special attention from reviewers?
The toolchain implementation follows the
rust_toolchainpattern. The Lake package support follows thegit_submodulespattern for git-based dependency handling.Lake packages use git commit SHAs as versions (not semver), with an
inputRevfield indicating the branch/tag being tracked (e.g.,"main"or"v1.0.0"). The update checker finds the latest commit on that branch.Inspired by the lean-update GitHub Action which also handles both
lean-toolchainandlake-manifest.jsonupdates.How will you know you've accomplished your goal?
Checklist