The Rust team is happy to announce a new version of Rust, 1.67.0. Rust is a programming language empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup, you can get 1.67.0 with:
rustup update stable
If you don’t have it already, you can get rustup
from the appropriate page on our website, and check out the detailed release notes for 1.67.0 on GitHub.
If you’d like to help us out by testing future releases, you might consider updating locally to use the beta channel (rustup default beta
) or the nightly channel (rustup default nightly
). Please report any bugs you might come across!
What’s in 1.67.0 stable
#[must_use]
effective on async fn
async
functions annotated with #[must_use]
now apply that attribute to the output of the returned impl Future
. The Future
trait itself is already annotated with #[must_use]
, so all types implementing Future
are automatically #[must_use]
, which meant that previously there was no way to indicate that the output of the Future
is itself significant and should be used in some way.
With 1.67, the compiler will now warn if the output isn’t used in some way.
#[must_use]
async fn bar() -> u32 { 0 }
async fn caller() {
bar().await;
}
warning: unused output of future returned by `bar` that must be used
--> src/lib.rs:5:5
|
5 | bar().await;
| ^^^^^^^^^^^
|
= note: `#[warn(unused_must_use)]` on by default
std::sync::mpsc
implementation updated
Rust’s standard library has had a multi-producer, single-consumer channel since before 1.0, but in this release the implementation is switched out to be based on crossbeam-channel
. This release contains no API changes, but the new implementation fixes a number of bugs and improves the performance and maintainability of the implementation.
Users should not notice any significant changes in behavior as of this release.
Stabilized APIs
{integer}::checked_ilog
{integer}::checked_ilog2
{integer}::checked_ilog10
{integer}::ilog
{integer}::ilog2
{integer}::ilog10
NonZeroU*::ilog2
NonZeroU*::ilog10
NonZero*::BITS
These APIs are now stable in const contexts:
Check out everything that changed in Rust, Cargo, and Clippy.
Contributors to 1.67.0
Many people came together to create Rust 1.67.0. We couldn’t have done it without all of you. Thanks!