Skip to content

fix(build): rust-version names a toolchain that can actually build the tree - #1956

Merged
tato123 merged 1 commit into
mainfrom
fix/msrv-names-a-buildable-toolchain
Aug 24, 2026
Merged

fix(build): rust-version names a toolchain that can actually build the tree#1956
tato123 merged 1 commit into
mainfrom
fix/msrv-names-a-buildable-toolchain

Conversation

@tato123

@tato123 tato123 commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Refs #1852 (does not close it — see Scope).

[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.

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:

toolchain command result
1.87 cargo check --locked -p streamlib-macros exit 101E0658: let expressions in this position are unstable, 3 errors (codegen.rs:1217, grammar.rs:239, grammar.rs:240)
1.88 cargo check --locked --workspace --all-targets exit 0, 0 errors

So 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, and cargo metadata --no-deps reports no rust_version for 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:

  • If yes: the published crates need rust-version.workspace = true, and CI needs a job pinned to the floor, or it drifts again.
  • If no: the honest move is to delete the field.

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 pass
  • cargo fmt --all --check clean
  • cargo metadata --locked succeeds (lockfile untouched)
  • rust-version is not a field release-please manages — its extra-files jsonpaths are $.workspace.package.version and $.project.version only, so this does not desync the release baseline

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Raised the minimum supported Rust version to 1.88.

…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>
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f7cf9cca-590d-4896-8252-63f1a51f150d

📥 Commits

Reviewing files that changed from the base of the PR and between 1027b23 and 32463c1.

📒 Files selected for processing (1)
  • Cargo.toml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The workspace minimum supported Rust version was raised from 1.85 to 1.88 in Cargo.toml.

Changes

Rust Version Requirement Update

Layer / File(s) Summary
Update workspace Rust version
Cargo.toml
The workspace rust-version requirement changed from 1.85 to 1.88.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 32463

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)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: correcting the declared Rust toolchain version so it can build the workspace.
Docstring Coverage ✅ Passed 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…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

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)
  • Create PR with unit tests
  • Commit unit tests in branch fix/msrv-names-a-buildable-toolchain

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tato123
tato123 merged commit 4413afb into main Aug 24, 2026
9 checks passed
@tato123
tato123 deleted the fix/msrv-names-a-buildable-toolchain branch August 24, 2026 23:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant