Skip to content

Pin MSRV to Rust 1.88 and verify in CI#44

Merged
iainmcgin merged 1 commit intomainfrom
feat/msrv-1.88
Apr 3, 2026
Merged

Pin MSRV to Rust 1.88 and verify in CI#44
iainmcgin merged 1 commit intomainfrom
feat/msrv-1.88

Conversation

@iainmcgin
Copy link
Copy Markdown
Collaborator

Closes #43

The workspace had no declared MSRV. The codebase actually uses let-chains (`if let Some(x) = y && condition`) in 20+ places across the published crates, and let-chains were stabilized in Rust 1.88, so 1.88 is the real minimum.

Changes

  • `rust-version = "1.88"` added to `[workspace.package]` in the root `Cargo.toml`
  • `rust-version.workspace = true` propagated to all 10 member crates
  • New `msrv-check` CI job that runs `cargo check --workspace --all-features --all-targets` on Rust 1.88 to keep the floor honest going forward

Verification

  • `cargo +1.88 check --workspace --all-features --all-targets` passes locally
  • `cargo +1.88 test --workspace --all-features` passes locally (310+ tests, 0 failures)
  • Stable clippy + nightly fmt unaffected

Notes

I initially tried 1.85 (matching the buffa workspace), but it fails for two compounding reasons:

  1. Let-chains in `connectrpc-codegen/src/codegen.rs:111` and ~20 other call sites in the published crates - stabilized in 1.88
  2. Transitive deps via dev-dependencies (`rcgen` → `time`) and bench dependencies (`redis` → `url` → `idna` → `icu_*`, `pprof` → `home`) require 1.86 - 1.88 themselves

Bumping to 1.88 reflects what the code already requires rather than refactoring the let-chains away.

The codebase uses let-chains (if let X && Y) which were stabilized in
1.88, so 1.88 is the actual minimum supported version. Declares
rust-version on the workspace and propagates it to all member crates,
plus a new msrv-check CI job that runs cargo check on the pinned
toolchain to keep this honest going forward.
@iainmcgin iainmcgin marked this pull request as ready for review April 3, 2026 19:19
@iainmcgin iainmcgin requested a review from rpb-ant April 3, 2026 19:19
@iainmcgin iainmcgin merged commit 360d77e into main Apr 3, 2026
12 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Apr 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pin MSRV to Rust 1.88 and verify in CI

2 participants