Skip to content

build: standardize Rust toolchain on 1.93 (PPA build, MSRV, CI verification)#209

Merged
inureyes merged 2 commits into
mainfrom
build/rust-1.93-toolchain
May 26, 2026
Merged

build: standardize Rust toolchain on 1.93 (PPA build, MSRV, CI verification)#209
inureyes merged 2 commits into
mainfrom
build/rust-1.93-toolchain

Conversation

@inureyes
Copy link
Copy Markdown
Member

Summary

Standardize the project's Rust toolchain handling on 1.93, across three areas:

  1. Launchpad PPA build toolchain → rustc-1.93 (1.93.1). The ~lablup/+archive/ubuntu/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.
  2. Workspace MSRV → 1.93. The previously declared MSRV (1.88) was inaccurate (see below).
  3. New CI msrv job that verifies the declared MSRV so it can no longer silently drift.

Why the MSRV bump (the important part)

rustyline 18 (a direct dependency) calls File::lock/File::lock_shared — the file_lock feature, stabilized in Rust 1.89. So the workspace has not compiled on 1.88 since rustyline was adopted, even though we declared rust-version = "1.88".

Verified locally with cargo check --workspace --locked:

Toolchain Result
1.88.0 error[E0658]: use of unstable library feature 'file_lock'
1.89.0
1.93.0

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-Depends rustc-1.93 | rustc (>= 1.93), cargo-1.93 | cargo (>= 1.93)
  • debian/rules{,.source,.launchpad,.launchpad-simple}: prefer rustc-1.93/cargo-1.93, require >= 1.93
  • .github/workflows/launchpad_ppa.yml: vendor_rust 1.92.01.93.1 (all distros)
  • debian/README.packaging: version references

MSRV + CI (255dc630)

  • Cargo.toml, crates/bssh-russh/Cargo.toml: rust-version 1.881.93
  • .github/workflows/ci.yml: new msrv job — reads rust-version from Cargo.toml (so the job never drifts from the declaration) and runs cargo check --workspace --locked on that toolchain. The main ci job stays on stable.

Distribution behavior (all converge on 1.93.1)

Distro rustc source
jammy PPA rustc-1.93 (1.93.1)
noble PPA rustc-1.93 (1.93.1)
resolute archive rustc 1.93.1 (rust-defaults)

Notes

  • No rust-toolchain.toml was added intentionally: pinning would force all rustup builds (local/CI/release) onto one version and drop stable coverage, and it wouldn't affect the Launchpad build anyway (that uses the system cargo-1.93, not rustup).
  • crates/bssh-russh-sftp does not declare a rust-version; left out of scope here but could be set to 1.93 for consistency since it is published.

Test plan

  • cargo +1.88.0 check --workspace --locked → fails (E0658), confirming the floor
  • cargo +1.89.0 check --workspace --locked → passes
  • cargo +1.93.0 check --workspace --locked → passes
  • ci.yml / launchpad_ppa.yml YAML validated; MSRV extraction yields 1.93
  • CI msrv job green on this PR

inureyes added 2 commits May 26, 2026 08:54
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.
@inureyes inureyes added the type:chore Maintenance tasks (build, CI, etc) label May 25, 2026
@inureyes inureyes merged commit 99c7c5c into main May 26, 2026
3 checks passed
@inureyes inureyes deleted the build/rust-1.93-toolchain branch May 26, 2026 00:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:chore Maintenance tasks (build, CI, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant