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!