build: standardize Rust toolchain on 1.93 (PPA build, MSRV, CI verification)#209
Merged
Conversation
The ~lablup/rustc-release PPA now publishes rustc-1.93 (1.93.1) for
jammy and noble, and Ubuntu 26.04 (resolute) ships 1.93.1 in its
archive, so jammy/noble no longer need to stay on rustc-1.92.
- debian/control{,.source}: Build-Depends rustc-1.93 | rustc (>= 1.93)
and cargo-1.93 | cargo (>= 1.93)
- debian/rules{,.source,.launchpad,.launchpad-simple}: prefer the
rustc-1.93/cargo-1.93 binaries and require >= 1.93
- launchpad_ppa.yml: vendor_rust 1.92.0 -> 1.93.1 for all distros
- README.packaging: update version references
The declared MSRV (1.88) was inaccurate: rustyline 18 uses File::lock (the file_lock feature, stabilized in Rust 1.89), so the workspace has not built on 1.88 since rustyline was adopted. `cargo +1.88.0 check` fails with E0658 while 1.89 and 1.93.0 build clean. CI never caught this because it only builds on stable. - Cargo.toml, crates/bssh-russh/Cargo.toml: rust-version 1.88 -> 1.93 (aligned with the Launchpad PPA build toolchain; real floor is 1.89) - ci.yml: add an msrv job that reads rust-version from Cargo.toml and runs cargo check --workspace --locked on that toolchain, so the declared MSRV can no longer silently drift; the main job stays on stable to keep newest clippy/regression coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Standardize the project's Rust toolchain handling on 1.93, across three areas:
~lablup/+archive/ubuntu/rustc-releasePPA now publishesrustc-1.93(1.93.1) for jammy and noble, and Ubuntu 26.04 (resolute) ships 1.93.1 in its archive — so jammy/noble no longer need to stay onrustc-1.92.1.88) was inaccurate (see below).msrvjob that verifies the declared MSRV so it can no longer silently drift.Why the MSRV bump (the important part)
rustyline18 (a direct dependency) callsFile::lock/File::lock_shared— thefile_lockfeature, stabilized in Rust 1.89. So the workspace has not compiled on 1.88 since rustyline was adopted, even though we declaredrust-version = "1.88".Verified locally with
cargo check --workspace --locked:error[E0658]: use of unstable library feature 'file_lock'CI never caught this because it only builds on
stable. The real hard floor is 1.89; the declared MSRV is set to 1.93 to align with the Launchpad PPA build toolchain.Changes
PPA toolchain (
39ff5b5f)debian/control{,.source}: Build-Dependsrustc-1.93 | rustc (>= 1.93),cargo-1.93 | cargo (>= 1.93)debian/rules{,.source,.launchpad,.launchpad-simple}: preferrustc-1.93/cargo-1.93, require>= 1.93.github/workflows/launchpad_ppa.yml:vendor_rust1.92.0→1.93.1(all distros)debian/README.packaging: version referencesMSRV + CI (
255dc630)Cargo.toml,crates/bssh-russh/Cargo.toml:rust-version1.88→1.93.github/workflows/ci.yml: newmsrvjob — readsrust-versionfromCargo.toml(so the job never drifts from the declaration) and runscargo check --workspace --lockedon that toolchain. The maincijob stays onstable.Distribution behavior (all converge on 1.93.1)
rustc-1.93(1.93.1)rustc-1.93(1.93.1)rustc1.93.1 (rust-defaults)Notes
rust-toolchain.tomlwas added intentionally: pinning would force all rustup builds (local/CI/release) onto one version and dropstablecoverage, and it wouldn't affect the Launchpad build anyway (that uses the systemcargo-1.93, not rustup).crates/bssh-russh-sftpdoes not declare arust-version; left out of scope here but could be set to1.93for consistency since it is published.Test plan
cargo +1.88.0 check --workspace --locked→ fails (E0658), confirming the floorcargo +1.89.0 check --workspace --locked→ passescargo +1.93.0 check --workspace --locked→ passesci.yml/launchpad_ppa.ymlYAML validated; MSRV extraction yields1.93msrvjob green on this PR