<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/rust-1-100-0-aaxejzyqg" -->

---
title: Rust 1.100.0 | daily.dev
description: Rust 1.100.0 stabilizes the never type and extern "custom", and makes custom allocators stable in the standard library. Cargo gains its own linting system with...
canonical: https://daily.dev/posts/rust-1-100-0-aaxejzyqg
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Rust 1.100.0 | daily.dev
og:description: Rust 1.100.0 stabilizes the never type and extern "custom", and makes custom allocators stable in the standard library. Cargo gains its own linting system with...
og:url: https://daily.dev/posts/rust-1-100-0-aaxejzyqg
og:image: https://api.daily.dev/og/posts/AAxEJzYQg.png
og:image:alt: Rust 1.100.0
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Rust 1.100.0

**[Hacker News](https://daily.dev/sources/hn)** · 4 min read · 0 upvotes · 0 comments

## Summary

Rust 1.100.0 stabilizes the never type and extern "custom", and makes custom allocators stable in the standard library. Cargo gains its own linting system with a cargo::unused_dependencies lint, plus dependency cooldowns via minimum publish age config. wasm32-wasip3 is promoted to Tier 2 and powerpc64-sony-ps3 becomes a new Tier 3 target. Compatibility notes include closures capturing if let variables more precisely, which may cause new errors, and the standard library moving to Unicode 18.0.0.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/rust-lang/rust/releases/tag/1.100.0>

## Questions this post answers

### What new features were stabilized in Rust 1.100.0?

Rust 1.100.0 stabilizes the never type (!), extern "custom" ABI, and custom allocators in the standard library, including Allocator, Global, System, and allocator-aware methods on Box, Vec, Rc, and Arc like Box::new_in and Vec::with_capacity_in. It also adds str::trim_prefix, str::trim_suffix, and Vec::from_fn.

_Track new stable APIs like custom allocators with daily.dev before they land in your Rust toolchain._

### What breaking changes should I watch for when upgrading to Rust 1.100.0?

Closures now more precisely capture variables used in if let, which may cause new errors, and dyn-compatibility of trait objects is checked in more places. Box patterns are no longer syntactically allowed, Infallible is now a type alias to !, and the standard library moved to Unicode version 18.0.0, which can change behavior relying on character classification.

_Developers planning a Rust upgrade can follow compatibility notes like these on daily.dev before they break a build._

### What changed in Cargo with Rust 1.100.0?

Cargo introduced its own linting system, letting users control Cargo warnings via a [lints.cargo] table, including a new cargo::unused_dependencies lint. It also added minimum publish age configurations (dependency cooldowns) per RFC 3923, so the resolver can ignore versions published too recently, and cargo-install now reuses the existing lockfile in the .crate tarball by default, making --locked a no-op.

_Anyone tuning dependency management workflows can keep up with Cargo changes like these on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 66 comments across hackernews (as of 2026-11-12).

**TL;DR:** Reactions are largely enthusiastic about this being a landmark release (never type, custom allocators, cargo dependency cooldowns), while a long side-thread debates whether Rust should ever get a stable ABI.

**Sentiment:** 55% positive · 35% mixed · 10% skeptical

**The case for**

- Many see this as one of the biggest, most significant releases in a long time, thanking maintainers for long-awaited features landing together.
- The new cargo::unused_dependencies lint is welcomed as immediately useful.
- Custom allocator stabilization (Vec::new_in) arrived just in time to help someone fix a real arena/drop bug.
- The never type stabilization is celebrated, with some noting it ends a long-running joke about its naming/timing.

**The pushback**

- Some are frustrated that Rust still lacks a stable ABI and want to understand why it's so hard to achieve.
- Complaints about long compile times and cargo generating huge amounts of temporary build artifacts persist.
- A few note the blog post undersells itself, omitting some notable stabilized APIs from its summary.

**By community**

- hackernews (mixed): Enthusiasm for the release's feature set coexists with a long, technical debate over the feasibility and tradeoffs of a stable Rust ABI.

**Hottest debate:** Whether Rust should (or ever can) ship a stable ABI, with generics and monomorphization cited as the core technical obstacle.

**Open questions**

- Will Rust ever ship an opt-in stable ABI, and what limitations would it have given generics/monomorphization?
- Is the compiler getting meaningfully faster, and when will excessive build artifact disk usage be addressed?

**Highlights**

> The primary challenge in having a stable ABI is that we have generics. So, even if we never changed the calling conventions, an ABI is not as simple as exporting a symbol with the right name. We implement generics by providing MIR (our main intermediate representation) that gets compiled by the linking program for each instantiation of a generic. Swift handles this through the equivalent of Rust's `dyn`. We could have a stable ABI that's based entirely on `dyn`. Such an ABI would have some limitations, since there are traits `dyn` can't represent (anything that's generic over something other than the type that implements the trait, which is quite common), though we're working on some of those. Essentially, you wouldn't be able to have a `Vec<T>` in your ABI without either pinning down T or using something like `Vec<Box<dyn Trait>>`. Which is possible, but kind of awful. We're still planning to ship a stable ABI at some point, but that gives a flavor for some of the kinds of problems we'd need to solve in order for that stable ABI to be useful. (C++ typically handles generics by having types defined in header files, and those get compiled with the program consuming the library, which is effectively the same situation Rust is in. You could export symbols from a shared library for specific instantiation of a template, but people rarely do that.)
> — [JoshTriplett on hackernews](https://news.ycombinator.com/item?id=50473008)

> Rust will almost certainly never have a stable ABI by default, and libraries will continue to be compiled from source by default. It might one day have an opt-in stable ABI.
> — [afdbcreid on hackernews](https://news.ycombinator.com/item?id=50472944)

> Those were stabilized in https://github.com/rust-lang/rust/pull/161712, which just barely missed the cutoff date for 1.100 and is on the 1.101 release train. (As for why they weren't stabilized at the same time: because it's not worth adding more baggage to a major, difficult stabilization process; as that would just be more surface area that has to be reviewed and another source of potential issues or delays. Instead, the stabilization process for infallible_unwrap was started immediately after `!` was stabilized. That process includes a 2-week final comment period for community feedback which is why they landed in different releases.)
> — [NobodyNada on hackernews](https://news.ycombinator.com/item?id=50472524)

> Woohoo, that's a release! My personal favorites: - Stabilize never type - Stabilize custom allocators - Introduced minimum publish age configurations, also known as dependency cooldowns. When the relevant config is set, the resolver ignores versions published more recently than that, unless they are already in Cargo.lock. (RFC 3923) docs #17335 - cargo-install: now uses the existing lockfile in the .crate tarball by default. --locked in cargo install becomes a no-op. #17388
> — [nirinor on hackernews](https://news.ycombinator.com/item?id=50471989)

> Is the compiler any faster now? Compiling takes forever. I'm also tired of always having to do "cargo clean" everyday to clear out 90gb of temp files.
> — [jadbox on hackernews · 2 comments](https://news.ycombinator.com/item?id=50473144)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=50471793) · 227 points · 66 comments

## Similar posts on daily.dev

- [Announcing Rust 1.97.0](https://daily.dev/posts/announcing-rust-1-97-0-fqxhq3pfj) · Rust · 22 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#webassembly](https://daily.dev/tags/webassembly)

[View this post on daily.dev](https://daily.dev/posts/rust-1-100-0-aaxejzyqg)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Rust 1.100.0","url":"https://daily.dev/posts/rust-1-100-0-aaxejzyqg","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/rust-1-100-0-aaxejzyqg"},"datePublished":"2026-11-12T18:44:58.999Z","dateModified":"2026-11-12T21:07:11.117Z","description":"Rust 1.100.0 stabilizes the never type and extern \"custom\", and makes custom allocators stable in the standard library. Cargo gains its own linting system with...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4fc98d14d965dffd55d10a356786fb55?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4fc98d14d965dffd55d10a356786fb55?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/rust-1-100-0-aaxejzyqg","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust,webassembly","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Rust 1.100.0"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/rust-1-100-0-aaxejzyqg#faq","mainEntity":[{"@type":"Question","name":"What new features were stabilized in Rust 1.100.0?","acceptedAnswer":{"@type":"Answer","text":"Rust 1.100.0 stabilizes the never type (!), extern \"custom\" ABI, and custom allocators in the standard library, including Allocator, Global, System, and allocator-aware methods on Box, Vec, Rc, and Arc like Box::new_in and Vec::with_capacity_in. It also adds str::trim_prefix, str::trim_suffix, and Vec::from_fn. Track new stable APIs like custom allocators with daily.dev before they land in your Rust toolchain."}},{"@type":"Question","name":"What breaking changes should I watch for when upgrading to Rust 1.100.0?","acceptedAnswer":{"@type":"Answer","text":"Closures now more precisely capture variables used in if let, which may cause new errors, and dyn-compatibility of trait objects is checked in more places. Box patterns are no longer syntactically allowed, Infallible is now a type alias to !, and the standard library moved to Unicode version 18.0.0, which can change behavior relying on character classification. Developers planning a Rust upgrade can follow compatibility notes like these on daily.dev before they break a build."}},{"@type":"Question","name":"What changed in Cargo with Rust 1.100.0?","acceptedAnswer":{"@type":"Answer","text":"Cargo introduced its own linting system, letting users control Cargo warnings via a [lints.cargo] table, including a new cargo::unused_dependencies lint. It also added minimum publish age configurations (dependency cooldowns) per RFC 3923, so the resolver can ignore versions published too recently, and cargo-install now reuses the existing lockfile in the .crate tarball by default, making --locked a no-op. Anyone tuning dependency management workflows can keep up with Cargo changes like these on daily.dev."}}]}
```

