Rust 1.89.0 ships with one historical shift and several quality-of-life upgrades.
Before you rush to rustup update stable
, here are the headlines: Intel Macs are no longer a first-class target, the compiler now calls out implicit lifetime relationships, and performance folks get new toys on x86.
Farewell to an era: x86_64-apple-darwin demoted
With Apple fully embracing Apple Silicon and GitHub dropping free macOS x86_64 runners for public CI, the Rust project is following suit.
Starting with 1.89, x86_64-apple-darwin
(Intel Mac) moves from Tier 1 to Tier 2.
What changes?
- Tier 2 still provides official toolchains, but full CI guarantees are gone.
- Regressions specific to Intel Macs may slip through releases.
If you still develop Rust on an Intel Mac, consider pinning your toolchain or planning a hardware upgrade.
Compiler clarity: detecting mismatched lifetime syntaxes
Lifetimes are famously subtle. A frequent pitfall is when input lifetimes are explicit while output lifetimes are implicit via elision, hiding a dependency between them.
Example:
// The returned Iter borrows from `scores`, but that's not obvious.
fn items(scores: &[u8]) -> std::slice::Iter<u8> {
scores.iter()
}
Rust 1.89 introduces a default-on lint, mismatched_lifetime_syntaxes
, that flags these asymmetric cases and suggests making the relationship explicit, e.g. std::slice::Iter<'_, u8>
.
This turns implicit conventions into visible contracts—clearer APIs, fewer surprises, and better safety.
Goodies for performance and ergonomics
Constant generics: underscore inference
You can now use
_
in array lengths within const generics to let the compiler infer the size:pub fn all_false<const LEN: usize>() -> [bool; LEN] { [false; _] }
New x86 intrinsics
Fresh support lands for families like
sha512
,sm3
,sm4
, andavx512
variants—great news for crypto and high-performance workloads.More stabilized APIs
Highlights include file locking with
File::lock
,Result::flatten
,NonNull::from_ref
, and more—small features that add up to smoother day-to-day coding.
Rust 1.89 closes one hardware chapter while making the language more approachable and powerful. Onward.