chore(msrv): bump workspace rust-version from 1.85 to 1.88#1815
Conversation
- 1.88 is the minimum floor that avoids `cargo update` regressions on the current lockfile (bollard, tonic, testcontainers, serde_with, time, ureq, etc. all require Rust > 1.85; 1.86 and 1.87 still produce downgrades) - Aligns with torrust-index, which also uses rust-version = "1.88" - Stabilised let_chains (RFC 2679) triggered 5 collapsible_if clippy fixes across tracker-core, udp-tracker-server, and src/console - MSRV policy (app tracks latest stable post-extraction; bittorrent-* libraries keep minimum MSRV for external consumer compatibility) documented in AGENTS.md and issue spec torrust#1787
There was a problem hiding this comment.
Pull request overview
This PR raises the workspace Minimum Supported Rust Version (MSRV) to Rust 1.88 to prevent MSRV-aware dependency resolution from downgrading already-pinned lockfile dependencies, and updates code/docs accordingly.
Changes:
- Bump workspace
rust-versionfrom 1.85 → 1.88. - Apply clippy-driven
collapsible_ifrefactors usinglet-chains (now stable with the new MSRV). - Update MSRV references in documentation and add
ureqto the spell-check dictionary.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Cargo.toml | Bumps workspace rust-version to 1.88 (propagated via workspace.package). |
| packages/tracker-core/tests/common/test_env.rs | Refactors retry loop condition using let-chains (currently introduces a compile issue). |
| packages/tracker-core/tests/integration.rs | Collapses nested conditionals into a let-chain in an integration test retry loop. |
| packages/udp-tracker-server/src/statistics/event/handler/error.rs | Collapses nested conditionals into a let-chain for metrics labeling logic. |
| src/console/ci/compose.rs | Collapses nested conditionals into a let-chain while waiting for compose port mappings. |
| src/console/ci/e2e/logs_parser.rs | Collapses nested conditionals into a let-chain when parsing health-check URLs. |
| AGENTS.md | Updates MSRV reference and adds an MSRV policy note. |
| .github/skills/dev/maintenance/setup-dev-environment/SKILL.md | Updates MSRV reference in dev environment setup guidance. |
| docs/issues/open/1787-evaluate-msrv-bump.md | Marks the issue spec as done and records the policy decision/rationale (has internal consistency issues). |
| project-words.txt | Adds ureq to the project dictionary (kept in sorted order). |
Comments suppressed due to low confidence (2)
docs/issues/open/1787-evaluate-msrv-bump.md:140
- The Implementation Plan lists T5 (“Verify CI passes”) as TODO, but the workflow checkpoints below mark “Automatic verification completed” as done. Please make these consistent (either mark T5 as DONE and add evidence, or revert the workflow checkpoint if CI hasn’t been run yet).
| ID | Status | Task | Notes / Expected Output |
| --- | ------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| T1 | DONE | Decide MSRV policy (track latest stable vs. pin conservative floor) | Policy documented in "Policy Decision" section: 1.88 for the whole workspace now; split policy (app tracks latest stable, extracted libraries keep minimum MSRV) to be applied post-#1669. |
| T2 | DONE | Update `rust-version` in root `Cargo.toml` | Changed from `"1.85"` to `"1.88"` |
| T3 | DONE | Update `AGENTS.md` MSRV reference | Updated from `1.85` to `1.88` |
| T4 | DONE | Update setup-dev-environment SKILL.md MSRV reference | Updated from `1.85` to `1.88` |
| T5 | TODO | Verify CI passes | Full quality gate (`linter all`, tests, pre-push hook) |
docs/issues/open/1787-evaluate-msrv-bump.md:202
- The Acceptance Verification table marks AC1–AC4 as DONE, but the Acceptance Criteria checklist above (AC1–AC4) remains unchecked. Please update one of these so the spec doesn’t show contradictory completion status.
| AC ID | Status (`TODO`/`DONE`) | Evidence |
| ----- | ---------------------- | ------------------------------------------------------------------------------------------------------------- |
| AC1 | DONE | Policy documented in "Policy Decision" section; split policy for post-extraction recorded as follow-up action |
| AC2 | DONE | `rust-version = "1.88"` in `Cargo.toml` |
| AC3 | DONE | `AGENTS.md` updated to MSRV 1.88 |
| AC4 | DONE | `setup-dev-environment` SKILL.md updated to MSRV 1.88 |
| AC5 | TODO | |
| AC6 | TODO | |
| AC7 | TODO | |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
ACK 7462511 |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #1815 +/- ##
========================================
Coverage 77.70% 77.70%
========================================
Files 379 379
Lines 28607 28605 -2
Branches 28607 28605 -2
========================================
- Hits 22228 22227 -1
+ Misses 6066 6064 -2
- Partials 313 314 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Closes #1787
Summary
Bumps
rust-versioninCargo.tomlfrom1.85to1.88.Motivation
cargo updatewith MSRV 1.85 was downgrading already-present packages (bollard,tonic, testcontainers, serde_with, time, ureq, etc.) because those packages
already in the lockfile require Rust > 1.85. The MSRV-aware resolver (stable
since Rust 1.76) only selects package versions compatible with the declared
rust-version.A dry-run at 1.86, 1.87, and 1.88 showed that 1.88 is the minimum floor that
produces zero downgrades on the current lockfile. It also aligns with the MSRV
used in torrust-index.
Changes
Cargo.toml:rust-version = "1.85"→"1.88"collapsible_iffixes:let_chains(RFC 2679) was stabilised inRust 1.88, so clippy now expects nested
if/if letpatterns to be collapsedwith
&&let-chain syntax. Fixed in:packages/tracker-core/tests/common/test_env.rspackages/tracker-core/tests/integration.rspackages/udp-tracker-server/src/statistics/event/handler/error.rssrc/console/ci/compose.rssrc/console/ci/e2e/logs_parser.rsAGENTS.md: updated MSRV reference and added MSRV policy note.github/skills/dev/maintenance/setup-dev-environment/SKILL.md: updated MSRV referencedocs/issues/open/1787-evaluate-msrv-bump.md: issue spec marked done, Policy Decision section addedproject-words.txt: addedureq(spell-check dictionary)Policy Decision
Until the
bittorrent-*crates are extracted as standalone libraries (#1669),a single workspace MSRV applies. Once they are extracted:
torrust-tracker-*, main binary): track a recentstable Rust version.
bittorrent-*libraries: carry the minimum MSRV needed for externalconsumer compatibility.
A follow-up issue will be opened when #1669 closes to apply the split policy.