Rust 1.85 Released: What Changed in the New Release
The Rust development team has presented another stable update of the language — version 1.85. This release brings a number of long-awaited features that simplify writing asynchronous code, improve performance, and expand the developer toolkit. Let's look at the key changes.
Stabilization of async closures
One of the main events was the stabilization of async closures — closures that can be asynchronous. Previously, to return an async closure, you had to manually write complex signatures with impl Future. Now the compiler supports the syntax:
- async || { ... } — direct declaration of an async closure.
- Automatic variable capture with lifetime support.
- Compatibility with the
FnOnce,FnMut, andFntraits.
This simplifies writing asynchronous event handlers, middleware, and callback functions in web frameworks (e.g., Axum or Actix).
Improved borrow checker
In Rust 1.85, the borrow analyzer has been significantly improved. It now better understands cases where a variable is used after a partial move:
- It is allowed to borrow individual fields of a struct, even if other fields have already been moved.
- Improved handling of nested borrows in iterators.
- Reduced number of false warnings in code with conditional constructs.
This is especially useful when working with large data structures that require partial ownership.
New macro capabilities
The release includes an expansion of the macro system (proc macros):
- Added support for token streams with the ability to modify positions in the source code.
- Simplified creation of attribute macros for structs and enums.
- Improved error handling inside macros — messages are now displayed with an exact line reference in the user's code.
This will make the development of libraries for serialization (serde), web routing, and code generation more flexible.
Compiler optimization and cargo improvements
The developers continued work on compilation performance:
- Incremental compilation for large projects has been accelerated (up to 15% faster).
- Added support for parallel dependency analysis in
cargo check. - Improved caching of intermediate artifacts in
cargo build.
Also, a new command cargo info has appeared in cargo, which shows detailed information about a package from the registry (versions, dependencies, license) without needing to download it.
Security fixes and stability
Version 1.85 closes several vulnerabilities related to handling unsafe code. Memory handling bugs when using std::mem::transmute and MaybeUninit have been fixed. The Rust team recommends that all users update to ensure project security.
How to update
The update is available through the official rustup installer. To install the new version, run the command:
Recommended Libraries
More news
New Rust Framework Gains Popularity: What Developers Need to Know
C# (.NET) entered the top of the most loved programming languages according to Stack Overflow
Kotlin Roadmap 2025-2026: What JetBrains Has in Store for Developers
Swift 6 Released: New Features for iOS and macOS Development
Swift 2025: Curriculum for iOS/macOS Developer