The Rust team is happy to announce a new version of Rust, 1.97.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.97.0 with:
$ rustup update stableIf you don't have it already, you can get .
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
What's in 1.97.0 stable
,
also (sometimes) used by C++.
The new mangling scheme resolves a number of drawbacks from the previous one:
- Generic parameter instantiations preserve their values, rather than being tracked solely behind a hash
- Inconsistencies: not all parts used the Itanium ABI, meaning that custom demangling was still necessary
Since Rust 1.59, the compiler has supported opting into a Rust-specific
mangling scheme via -Csymbol-mangling-version=v0. Since November 2025, this
scheme has been enabled by default on nightly, and 1.97 is now enabling it on
stable Rust. The legacy mangling scheme can only be enabled on nightly, and the
current plan is to fully remove it.
See the previous
Cargo support for denying warnings
It's common practice to deny warnings in CI. Historically, doing so is
typically done through RUSTFLAGS=-Dwarnings. With Rust 1.97, Cargo controls
how warnings interact with build success: either silencing them (via allow
level), rendering without failing (default, warn), or denying them (via deny).
As a result of Cargo configuration determining the behavior, using this
feature doesn't invalidate the underlying build cache, meaning that it's easy
to temporarily opt-in. For example, if warnings are adding unwanted noise while
working through fixing errors after a refactor, you can run
CARGO_BUILD_WARNINGS=allow cargo check, temporarily silencing them.
In CI, jobs can instead set CARGO_BUILD_WARNINGS=deny to deny warnings. This
can be combined with --keep-going to collect all errors and warnings rather
than stopping on the first failing package.
See the
Linker output no longer hidden by default
rustc invokes a linker on behalf of users. Historically, rustc has silenced
linker output by default if the link completes successfully. This can mask real
problems, though, so in Rust 1.97 we are enabling linker messages by default.
These are emitted as a warning lint, for example:
warning: linker stderr: ignoring deprecated linker optimization setting '1'
|
= note: `#[warn(linker_messages)]` on by defaultCommon linker messages that have been diagnosed as false positives or intentional behavior
are filtered out by rustc. Several defects have already been fixed as a result
of no longer hiding this output on nightly.
Note that currently, linker_messages is a special lint that is not affected
by the warnings lint group. This is intentional as rustc generally doesn't
control linker output as precisely, and it's not uncommon for output to only
appear on some platforms. If you are seeing what you think is a false positive
output from the linker, please like this:
[lints.rust]
linker_messages = "allow"These previously stable APIs are now stable in const contexts:
Other changes
Check out everything that changed in , and
Contributors to 1.97.0
Many people came together to create Rust 1.97.0. We couldn't have done it without all of you. Thanks!
↗ Original-Artikel auf blog.rust-lang.org lesenVollständiger Original-BerichtAusführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf blog.rust-lang.org.
SOCIAL SHARE CARD GENERATOR