1.51.0 prerelease testing

The 1.51.0 pre-release is ready for testing. The release is scheduled for this Thursday, March 25th. Release notes can be found here.

You can try it out locally by running:

RUSTUP_DIST_SERVER=https://dev-static.rust-lang.org rustup update stable

The index is https://dev-static.rust-lang.org/dist/2021-03-23/index.html. Please comment here with any issues or problems discovered.


Error is now implemented for &T where T implements Error .

That's a major breaking change, which probably warrants being highlighted.

1 Like

Test-run of Rust 1.51 + arrayvec 0.6 with const generics went fine in CI :tada: (0.6 is now released in anticipation of the big day :slightly_smiling_face:).


That had me worried that my thumbv7neon-unknown-linux-gnueabihf binaries wouldn't work any more on Debian 10 Buster (libc6 2.28) though it seems still OK. Could the wording be clearer?

Hm, I think we updated the glibc we use on the builders for those targets to 2.31, but it looks like at least on those targets 2.28 is indeed the maximum version for libstd at least.

I'm hesitant to adjust the release notes as we're no longer technically supporting 2.28 for those targets, though; it'll be easy for a new symbol version to slip in I imagine.

The glibc thing is a gray area. We updated the builder to glibc 2.31, which means it could have linked symbol versions that high. If in practice it only links to older versions, that's nice, but that's not something we monitor, so something new could get used in the future without notice.

It looks like --features flag is now accepted in the root of a workspace with virtual manifest, even if I dont' specify resolver = 2. Seems like this should be mentioned in relnotes?

λ exa -T
├── Cargo.lock
├── Cargo.toml
└── crates
   └── foo
      ├── Cargo.toml
      └── src
         └── lib.rs

λ bat -p Cargo.toml
members = ["crates/*"]

λ bat -p crates/foo/Cargo.toml
name = "foo"
version = "0.1.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

x = []

λ cargo t --workspace --features 'x'
   Compiling foo v0.1.0 (/home/matklad/tmp/ws/crates/foo)
    Finished test [unoptimized + debuginfo] target(s) in 0.36s
     Running target/debug/deps/foo-5306c23ac8e1f38b

running 1 test
test smoke_test ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests foo

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

λ cargo --version
cargo 1.51.0 (43b129a20 2021-03-16)

It can be difficult to balance what is mentioned in the rust release notes, since it tends to only touch on the most notable changes. It can be hard to predict which changes will have broad interest, since there is often no feedback before the stable release. If you open a PR to add it to the release notes, I imagine it would likely be approved.

The Cargo release notes do mention the CLI changes as a top-level item, and links to the relevant section of the documentation and the RFC which discusses these changes.

1 Like