Perform MSRV checks against a minimal lockfile - #1255
Open
kayabaNerve wants to merge 18 commits into
Open
Conversation
kayabaNerve
force-pushed
the
minimal-msrv
branch
29 times, most recently
from
July 26, 2026 19:57
acf7727 to
65ae6a4
Compare
kayabaNerve
force-pushed
the
minimal-msrv
branch
2 times, most recently
from
July 28, 2026 01:45
a6224ab to
95ab7c4
Compare
Member
Author
|
This should be ready, barring two caveats:
|
kayabaNerve
force-pushed
the
minimal-msrv
branch
2 times, most recently
from
July 29, 2026 07:26
9a93382 to
0c4ecbc
Compare
Member
Author
|
CI passes 🎉 The only concern is if we should 'correct' the Also, on the next release of |
Member
Author
|
The |
This considers each crate independently, taking advantage of `-Zminimal-versions` to find the minimal lockfiles. This also helps ensure the accuracy of the declared version bounds in each crate. To ensure the MSRV is considered _as relevant to publishing_, `[dev-dependencies]` are stripped from the `Cargo.toml` before deciding the lockfile.
`hyper-util 0.1.0` did not enable, but does require, the `all` feature of `socket2`. This wasn't fixed until `hyper-util 0.1.2`. `tower-layer 0.3.1` is needed for `tower 0.4.0`, an indirect dependency, which only explicitly requires `tower-layer 0.3` (despite needing `tower-layer 0.3.1`). We solve this by upgrading to `hyper-util 0.1.9` which removed the dependency on `tower` entirely. We use hyper::body::Incoming::into_data_stream`, which was added only with `http-body-util 0.1.2`.
Unfortunately, some of our dependencies don't properly specify their minimum dependencies, so we have to add our own explicit dependencies on sufficient versions a couple of times. This also removes some unnecessary "^" notations from version specifications.
We need to publish a new version to fix how `multiexp::multiexp` was variable-time, which unfortunately is a breaking change to the API. This unfortunately does not update to `group 0.14` due to requiring `ff::PrimeFieldBits`, which RustCrypto has dropped support for. See #1241.
…tant-time operations
This is only when using our patch. The MSRV lint manually runs `cargo update -p expander` to handle its edge case with minimal versions.
kayabaNerve
force-pushed
the
minimal-msrv
branch
2 times, most recently
from
August 18, 2026 13:08
2d5eadf to
0b5283f
Compare
This uses the versions published to crates.io and removes the `simple-request` patch 🎉 For the FCMP++ libraries we use, this updates to the version with their MSRVs corrected (as this branch does) and with the `generalized-bulletproofs` audit by zkSecurity incorporated.
…cies This also addes `default = ["std"]` features to `serai-client-bitcoin` and `serai-client-ethereum`.
kayabaNerve
force-pushed
the
minimal-msrv
branch
3 times, most recently
from
August 18, 2026 23:43
5c8f533 to
fa28a04
Compare
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.
Fixes #1246.