Rust 1.89.0 Released with Various Performance Improvements

The Rust team is happy to announce the release of Rust 1.89.0, a significant update that brings various performance improvements and new features to the programming language.

To get started with the latest version, users can simply run `rustup update stable` if they have a previous version of Rust installed via rustup. Alternatively, they can download rustup from the official website and check out the detailed release notes for 1.89.0.

The new version includes several notable improvements. One major change is the introduction of explicitly inferred arguments to const generics, which allows users to infer values for constant generic parameters without having to specify them manually. This feature is particularly useful when working with complex data structures and generic types.

Another significant update is the addition of the `mismatched_lifetime_syntaxes` lint, which checks that the input and output lifetimes of a function belong to the same group. This lint aims to reduce confusion about when a value has a meaningful lifetime that isn’t visually obvious.

The Rust team has also made improvements to the x86 target, including support for additional instructions such as `sha512`, `sm3`, `sm4`, and `kl`. Furthermore, cross-compiled doctests are now tested by default, which may result in some amount of breakage due to would-be-failing tests.

Additionally, the i128 and u128 types are no longer triggered for improper ctypes definitions when used in extern “C” functions. However, users should be aware that these types may not align with C types on certain platforms.

The Rust project is also demoting the x86_64-apple-darwin target from Tier 1 to Tier 2 with host tools due to changes in Apple’s plans for discontinuing support for this architecture. This change will not immediately impact users, but it may cause reduced test coverage and compatibility issues over time.

Finally, the Rust team has stabilized various APIs, including `NonZero`, and added new Tier-3 targets for platforms such as Loongarch32-unknown-none and Loongarch32-unknown-none-softfloat.

Source: https://blog.rust-lang.org/2025/08/07/Rust-1.89.0