Rust 1.100.0 Stabilizes the Never Type and Core Parts of the Allocator API, and Adds Opt-In Dependency Cooldowns to Cargo
Rust 1.100.0, announced November 12, 2026, stabilizes the never type and core parts of the Allocator API, and switches pre-2024 never type fallback from () to !.
Editor's Note ·
- Clarification:
- The closing section says 'The cited sources do not state in so many words whether the `i686-pc-windows-msvc` host-tool removal is in the 1.100.0 toolchains.' The cited rust-lang/rust pull request 162288 page includes cross-referenced commit messages from a downstream project (smol-rs/polling, September 18) that say 'Rust 1.100 dropped host tools for both i686-pc-windows-msvc (RFC 3999, rust-lang/rust#162288) and i686-pc-windows-gnu'. That is a downstream project's statement about nightly builds, not a statement by the Rust project, and the Rust Blog and the release notes' Platform Support section still do not say it. The Machine Herald's editor also checked GitHub's compare API: the pull request's merge commit (32ffad3) is an ancestor of the 1.100.0 tag.
Overview
The Rust project released version 1.100.0 on November 12, 2026, according to the Rust Blog announcement, which gives a date but no time zone; the GitHub release page was published at 18:19 UTC the same day. The blog post leads with the never type, which it says is “finally stable” after “10 years and 5 failed stabilization attempts”, and also lists the stabilization of the core parts of allocator_api and three Cargo changes, including an opt-in minimum publish age that the post calls dependency cooldowns. The Machine Herald reported in September that the stabilization pull request had been merged with 1.100.0 as its milestone.
Three outlets published items on November 12, each stamped after the GitHub release page. Phoronix stamps its item 1:51 PM EST (18:51 UTC by the Herald’s conversion), LWN.net posted at 19:09 UTC according to its feed, and Linuxiac stamps its page 23:45 UTC. All three report the never type stabilization and the stabilization of the core Allocator API.
The never type
The Rust Blog says that the never type, written !, was already usable and could be named in the return type of functions, but that 1.100.0 “allows naming the never type anywhere”, with Result<T, !> as its example. Linuxiac gives the same example.
The release also makes Infallible an alias to the never type. To allow that, the Rust Blog says, “we had to introduce a breaking change”: the never type fallback changes from () to ! in the 2015, 2018 and 2021 editions, matching what the post says edition 2024 already did. The post says this “should largely be unnoticeable, but can affect code in some rare cases” and “might also make the compiler detect more code as unreachable”. It adds that the team gave future-compatibility warnings “far in advance” and released fixes to public crates that were broken by the change. The GitHub release notes list the same two changes under Compatibility Notes, phrasing the second as “The never type fallback was changed to ! on all editions”. Linuxiac says the change “should affect few projects, but some existing code or dependencies may require updates”.
Allocator API
According to the Rust Blog, the release stabilizes “the core parts of allocator_api”, letting library authors define custom allocators for “certain standard library types - currently Vec and Box” through the newly stabilized Allocator trait. The post calls this the foundation of the Allocators 1.0 project goal and says a lot remains to be done, including stabilizing custom allocators on more collections and pointer types. Among the APIs it lists as stabilized are Box::new_in, Vec::new_in and Vec::with_capacity_in. The GitHub release notes add a compatibility warning: “Some impls on Box have been generalised to arbitrary allocators, which may cause new type inference errors”.
Library additions
The Rust Blog also introduces core::mem::DropGuard, a helper that runs a closure when dropped and has a dismiss method to skip it, and std::mem::conjure_zst, an unsafe function for creating a value of a zero-sized type. Smaller stabilized APIs, among others, include bool::toggle, Vec::from_fn and str::trim_prefix, according to the blog’s list.
Cargo
Per the Rust Blog, Cargo now reports unused dependencies under a new lint, cargo::unused_dependencies, which is set to warn by default. The warning appears only when every build target that may use a dependency is built, and the post says no warning is shown for unused dev-dependencies. The lint is part of a new Cargo lint system controlled by a [lints.cargo] table.
The minimum publish age is opt-in. The post’s example sets global-min-publish-age = "3 days" under [registry] in .cargo/config.toml, after which Cargo skips versions published more recently, with limits the post lists: versions without a pubtime field in the registry index “are never held back”, and “cargo install ignores the minimum publish age”. The post adds that cooldowns “are not a complete defense on their own”. The GitHub release notes say the resolver ignores newer versions “unless they are already in Cargo.lock”. An earlier Herald Analysis of dependency cooldowns covers cooldowns in pnpm, pip, Bundler, Dependabot and GitHub’s package firewall.
Two further Cargo changes affect builds. The GitHub release notes say cargo install “now uses the existing lockfile in the .crate tarball by default” and that --locked becomes a no-op. They also describe a new directory layout for intermediate build artifacts that “is not a stable interface”; the Rust Blog warns that the change “may break build processes and tests that had workarounds for missing or incomplete features”.
Other compatibility notes and platform support
The GitHub release notes list 20 entries under Compatibility Notes (the Herald’s count). Among them: closures “now more precisely capture variables used in if let”, which “may cause new errors”; box patterns “are no longer syntactically allowed”; and the standard library now uses Unicode 18.0.0.
The notes’ Platform Support section lists i686-pc-windows-gnu as “now a tier 2 without host tools target”, promotes wasm32-wasip3 to Tier 2 and adds a Tier 3 target, powerpc64-sony-ps3. The Herald reported in October that the Rust Blog had announced host-tool removal for both i686-pc-windows-gnu and i686-pc-windows-msvc with 1.100.0. The release notes’ Platform Support section does not list the second one. GitHub shows pull request 162288, “Drop host tools from i686-pc-windows-msvc”, as merged and assigned to the 1.100.0 milestone.
What We Don’t Know
None of the cited release-day sources gives a count of crates broken by the never-type fallback change, and none reports how the Cargo build-directory change has affected third-party tools. The cited sources do not state in so many words whether the i686-pc-windows-msvc host-tool removal is in the 1.100.0 toolchains; the pull request’s milestone points to it.