Skip to content

Perform MSRV checks against a minimal lockfile - #1255

Open
kayabaNerve wants to merge 18 commits into
nextfrom
minimal-msrv
Open

Perform MSRV checks against a minimal lockfile#1255
kayabaNerve wants to merge 18 commits into
nextfrom
minimal-msrv

Conversation

@kayabaNerve

Copy link
Copy Markdown
Member

Fixes #1246.

@kayabaNerve kayabaNerve added the improvement This could be better label Jul 25, 2026
@kayabaNerve
kayabaNerve force-pushed the minimal-msrv branch 29 times, most recently from acf7727 to 65ae6a4 Compare July 26, 2026 19:57
@kayabaNerve
kayabaNerve force-pushed the minimal-msrv branch 2 times, most recently from a6224ab to 95ab7c4 Compare July 28, 2026 01:45
@kayabaNerve

kayabaNerve commented Jul 28, 2026

Copy link
Copy Markdown
Member Author

This should be ready, barring two caveats:

  1. I updated monero-oxide to July 2026 Maintenance monero-oxide/monero-oxide#190, which isn't merged
  2. I didn't update the fcmp++ libraries, and we have some patches which should be upstreamed to generalized-bulletproofs
  3. The fcmp++ branch uses the old multiexp and should be updated to the new one, causing us to have both in our tree

@kayabaNerve
kayabaNerve force-pushed the minimal-msrv branch 2 times, most recently from 9a93382 to 0c4ecbc Compare July 29, 2026 07:26
@kayabaNerve

Copy link
Copy Markdown
Member Author

CI passes 🎉 The only concern is if we should 'correct' the monero-oxide commits updated to. That'd also allow removing some bounds which were specified here, but have now been specified upstream.

Also, on the next release of hyper-util, we should be able to remove our tracing bound in simple-request.

@kayabaNerve

Copy link
Copy Markdown
Member Author

The monero-oxide crates now use the published releases. Its solely the FCMP++ libraries, which don't have releases, we need their commits updated.

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.
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
kayabaNerve force-pushed the minimal-msrv branch 2 times, most recently from 2d5eadf to 0b5283f Compare August 18, 2026 13:08
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
kayabaNerve force-pushed the minimal-msrv branch 3 times, most recently from 5c8f533 to fa28a04 Compare August 18, 2026 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement This could be better

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant