fix(build): rust-version names a toolchain that can actually build the tree - #1956
Conversation
…e tree
`[workspace.package] rust-version` claimed 1.85. The tree uses 15 let-chains
across 10 files, and let-chains stabilized in 1.88, so no 1.85 toolchain has
ever been able to build this workspace. The number was never chosen against the
code; it has been wrong since whichever change first landed one.
Found the floor empirically rather than reasoning from the feature, since
let-chains need not be the only thing past 1.85:
1.87 cargo check -p streamlib-macros → E0658, 3 errors
`let` expressions in this position are unstable
1.88 cargo check --workspace --all-targets → clean, 0 errors
So 1.88 is the floor exactly, not merely a version that happens to work.
Scope note, because the diff is one line and the ticket asks for more. The
field is inherited by **zero** of the 24 workspace members — nothing declares
`rust-version.workspace = true`, and `cargo metadata` reports no MSRV for any
package — so it is inert today either way. Whether an MSRV should be a promise
this project makes at all, and therefore whether it needs a toolchain-pinned CI
job or should simply be deleted, is the owner's call and stays open on #1852.
This change only stops the field from stating something false.
Refs #1852
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe workspace minimum supported Rust version was raised from 1.85 to 1.88 in ChangesRust Version Requirement Update
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to This change updates the declared Rust version to a toolchain that can build the repository without changing runtime behavior; no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Refs #1852 (does not close it — see Scope).
[workspace.package] rust-versionclaimed 1.85. The tree uses 15 let-chains across 10 files, and let-chains stabilized in 1.88, so no 1.85 toolchain has ever been able to build this workspace. The number was never chosen against the code.Finding the floor
The ticket asks for the floor empirically rather than reasoned from the feature, since let-chains need not be the only thing past 1.85. Both runs local, this branch:
cargo check --locked -p streamlib-macrosE0658:letexpressions in this position are unstable, 3 errors (codegen.rs:1217,grammar.rs:239,grammar.rs:240)cargo check --locked --workspace --all-targetsSo 1.88 is the floor exactly — not merely a version that happens to work.
Scope — why this is one line, and what stays open
The field is inherited by zero of the 24 workspace members. Nothing declares
rust-version.workspace = true, andcargo metadata --no-depsreports norust_versionfor any package. So the field is inert today, whatever number it holds.That makes the ticket's second question — should an MSRV be a promise this project makes at all? — a real fork, and the owner's to settle:
rust-version.workspace = true, and CI needs a job pinned to the floor, or it drifts again.Either path is a decision, not a fix, so neither is in this diff. #1852 stays open for it. This change only stops the field from stating something false — which is decision-free and true under both outcomes.
Worth noting given this week: a declared-but-unenforced invariant silently drifting is exactly the shape of the release wedge fixed in #1955. The enforcement half is the part that would prevent a repeat, and it is the half that needs the owner.
Verification
cargo run -p xtask -- check-all-source-gates→ all 11 passcargo fmt --all --checkcleancargo metadata --lockedsucceeds (lockfile untouched)rust-versionis not a field release-please manages — itsextra-filesjsonpaths are$.workspace.package.versionand$.project.versiononly, so this does not desync the release baseline🤖 Generated with Claude Code
Summary by CodeRabbit