Rust 1.55.0 pre-release testing

The 1.55.0 pre-release is ready for testing. The release is scheduled for this Thursday, September 9th. 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-09-06/index.html. You can leave feedback on this thread.

5 Likes

I just added this toolchain and rebuilt a large project, with 476 dependencies. No issues at all.

Also, I think we may want to change the recommended test procedure for pre-releases. Rather than having people do an early upgrade of their stable toolchain, I think we should have people do rustup toolchain add 1.55.0 and then test with cargo +1.55.0 or similar. That way, they still have their normal stable toolchain until the actual stable release, and if they forget to update again right away, they don't end up continuing to run the pre-release for a while.

10 Likes

Do we want to highlight “ControlFlow works with ?” in relnotes/blog post? Seems like, given that Try trait is unstable, it is a small big deal and warrants spotlighting.

I’ve also opened https://github.com/rust-lang/rust/issues/88715 to document this better.

5 Likes

Hmm, is the whole current ControlFlow API going to be stabilized in one go? I just found out about these which, it seems, are going to provide a good argument for also adding a Result::<(), _>::OK:

pub const CONTINUE : ControlFlow<B, ()>

:microscope: This is a nightly-only experimental API. ( control_flow_enum #75744)

It’s frequently the case that there’s no value needed with Continue , so this provides a way to avoid typing (()) , if you prefer it.

pub const BREAK : ControlFlow<(), C>

:microscope: This is a nightly-only experimental API. ( control_flow_enum #75744)

APIs like try_for_each don’t need values with Break , so this provides a way to avoid typing (()) , if you prefer it.

According to Nightly docs ControlFlow in std::ops - Rust the enum itself is stable in 1.55 but its inherent methods and associated consts are not. 1.55 beta is either already branched or will branch very soon, so I don’t expect this to change.

2 Likes

Thanks! Didn’t think to check the nightly docs.

1.56 has branched; 1.55 will be released on Thursday.

2 Likes

Note that those are not yet stable, even on nightly. Whether they're valuable is still an open question in the tracking issue (https://github.com/rust-lang/rust/issues/75744).

(And prelude questions would be very important for a Result::OK, since Ok(()) is still way shorter.)

Yeah, I realized that, was just confused a bit as it was not readily obvious which parts of the type are going to be stabilized right now. And yeah, I forgot that you can't (at least currently) use associated consts, preventing "bare" use of OK via use Result::OK.