Rust 1.100 arrives with the never type stable after 10 years and a safer Cargo

The Rust team has released Rust 1.100.0 on November 12, 2026. The update is available with rustup update stable and brings one of the most awaited features in the language's history: the never type is finally stable, after 10 years and five failed stabilization attempts. The official announcement was published on the language's blog.

The never type, finally stable

The never type, spelled ! in code, is the type of computations that never produce a value — such as return, break and std::process::exit. Until now, it could only appear as a function return type (-> !); in this release, it can be used in any type position, for example in Result<T, !>, which states in the type itself that an operation cannot fail.

The release also turns Infallible into an alias for the never type, making older APIs compatible with !. That required a small compatibility change: type inference for diverging expressions now picks ! instead of () in editions before 2024 (2015, 2018 and 2021). According to LWN, the team measured the impact with crater, which compiles every public crate on crates.io: about 3,300 crates were affected, but only seven were fully broken, and fixes have already been shipped to the affected public crates.

Custom allocators for Vec and Box

Rust 1.100 stabilizes the core of the Allocator API, which lets library authors define custom allocators for standard library types — for now, Vec and Box, with methods such as Vec::new_in and Box::new_in. It is the foundation of the Allocators 1.0 project goal, with more collections and pointer types on the way.

DropGuard and zero-sized types

The new core::mem::DropGuard runs a closure when a value goes out of scope, on any exit path — return, ? or panic — and offers a dismiss method to release the guard, making transactional APIs with rollback easier to write. Meanwhile, std::mem::conjure_zst is the dedicated, unsafe way to create values of zero-sized types when that is known to be safe.

Cargo against forgotten dependencies and supply-chain attacks

Cargo now warns about unused dependencies, with the cargo::unused_dependencies lint, enabled by default as a warning and configurable in the [lints.cargo] table of Cargo.toml. It is the first step of Cargo's new lint system.

The release also stabilizes min-publish-age, known as dependency cooldowns: with registry.global-min-publish-age = "3 days", Cargo ignores versions published more recently than the window, because malicious versions are usually caught within hours or days. In the announcement's example, cargo update kept clap 4.6.7 and held back 4.6.9, published two days earlier. The team itself notes that the feature reduces risk but is not a complete defense — and cargo install ignores the minimum age.

Other highlights

The standard library gains the bool::toggle method, which flips a boolean in place. On platforms, the wasm32-wasip3 target was promoted to Tier 2, while 32-bit Windows (i686) targets stop shipping compiler host tools and now receive only the standard library. The update also reduces Cargo cache collisions by reorganizing the build directory.

Sources

Image: Rust logo, Rust Foundation, CC BY 4.0, via Wikimedia Commons.

Transparency: This content was created, edited or reviewed with the help of artificial intelligence. The information was cross-checked against public posts on X and sources available on the internet. Consult the original sources to verify the full context.

By Muse