Rust 1.100 lanseras med beroendekylning och never-typ
Den nya versionen av Rust stabiliserar dependency cooldowns i Cargo för att skydda mot skadliga paket, samt slutför arbetet med never-typen och anpassade minnesallokatorer.
AI-genererad AI-kontrollerad mot källor
kontroll mot källor:4 källor lästa4 oberoende26 väsentliga påståenden kontrollerade0 utan stöd i källorna1 omskrivning
Kontrollen visar om uppgifter finns i de lästa källorna. Den är ingen oberoende bekräftelse.
Så kontrollerades artikeln
Kontrollen gjordes innan versionshistoriken började sparas och gällde texten som den såg ut då. Faktagranskaren listade varje väsentligt påstående, om de lästa källorna stöder det och, när ett program hittat det i källtexten, ett citat. Källtexterna själva visas inte.
Rust 1.100 lanseras med beroendekylning och never-typ
”The Rust team is happy to announce a new version of Rust, 1.100.0. ... What's in 1.100.0 stable Never type ... Cargo min-publish-age”
Den nya versionen av Rust stabiliserar dependency cooldowns i Cargo för att skydda mot skadliga paket, samt slutför arbetet med never-typen och anpassade minnesallokatorer.
”Rust 1.100 stabilizes Cargo's min-publish-age aware dependency resolution ... This practice is also known as dependency cooldowns. ... the never type is finally stable ... stabilization of the core…”
Rust 1.100 har lanserats med ett tydligt fokus på att stärka leveranskedjans säkerhet samt att slutföra flera långvariga språkutvecklingsprojekt [källa](https://blog.rust-lang.org/2026/11/12/Rust-1.100.0/).
”The Rust team is happy to announce a new version of Rust, 1.100.0. ... Cooldowns reduce the risk from some supply chain attacks ... After 10 years and 5 failed stabilization attempts, the never type…”
Utöver säkerhetsförbättringarna stabiliseras den så kallade never-typen, vilket har varit ett återkommande mål under språkets livstid, samt gränssnittet för anpassade minnesallokatorer.
”After 10 years and 5 failed stabilization attempts, the never type is finally stable ... stabilization of the core parts of allocator_api”
Den mest omtalade säkerhetsfunktionen i uppdateringen är stabiliseringen av "dependency cooldowns", även kallat min-publish-age.
”Rust 1.100 stabilizes Cargo's min-publish-age aware dependency resolution ... This practice is also known as dependency cooldowns.”
Enligt Rust-teamet möjliggör detta för utvecklare att konfigurera en minimiålder för när ett paket får användas, vilket ger tid för gemenskapen eller automatiserade verktyg att identifiera potentiellt skadliga versioner innan de sprids vidare [källa](https://blog.rust-lang.org/2026/11/12/Rust-1.100.0/).
”Malicious versions of packages are often caught within hours or days after being published, by either automated scanners or by the community. Rust 1.100 stabilizes Cargo's min-publish-age aware…”
Funktionen är opt-in och kräver konfiguration i filen `.cargo/config.toml`.
”You can opt in via .cargo/config.toml”
Ett exempel enligt dokumentationen är att sätta `global-min-publish-age` till tre dagar, varvid Cargo då ignorerar versioner som publicerats senare än så.
”[ registry ] global-min-publish-age = " 3 days " When selecting versions, Cargo now skips any version published more recently than that”
Om en äldre version ändå behövs kan utvecklaren överskrida gränsen för specifika paket via miljövariabler eller kommandoradsflaggor.
”When a new version is needed right away, you can override the check for a single update: $ CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE = a l l o w cargo update clap - -precise 4.6.9”
Rust-teamet poängterar dock att funktionen inte är ett fullständigt skydd mot leveranskedjeattacker och att granskning av beroenden fortfarande krävs.
”Cooldowns reduce the risk from some supply chain attacks but are not a complete defense on their own. Please keep reviewing dependency updates as you otherwise would.”
Samtidigt slutförs arbetet med never-typen, betecknad `!` i koden.
”the never type is finally stable ! ... The never type, spelled ! in code”
Efter tio år och fem misslyckade försök att stabilisera funktionen är den nu en del av standardbiblioteket [källa](https://blog.rust-lang.org/2026/11/12/Rust-1.100.0/).
”After 10 years and 5 failed stabilization attempts, the never type is finally stable !”
Typen representerar beräkningar som aldrig avslutas, exempelvis vid `return` eller `exit`.
”It represents the type of diverging computations – computations which never resolve to any value ... Expressions that terminate control flow, such as return , break , and std::process::exit , also…”
Detta möjliggör mer exakt typkontroll, till exempel att ett gren i en `match`-sats kan returnera inget värde eftersom koden där efter är oåtkomlig.
”This can be used, for example, to not return a value from one of the branches of a match or an if”
För att underlätta övergången ändras `Infallible` till en alias för never-typen, vilket innebär att äldre API som använt `Infallible` nu kan använda `!`.
”Additionally this release changes Infallible to be an alias to the never type. That makes all old APIs that used Infallible be compatible with using !”
Denna ändring medför vissa brytande förändringar i kodsyntax för äldre editioner (2015–2021), där fallback-värdet ändras från `()` till `!`.
”Unfortunately, to allow changing Infallible , we had to introduce a breaking change. This release changes the "never type fallback" from () to ! in editions before 2024 (i.e. 2015, 2018, and 2021)”
Uppdateringen stabiliserar även kärnan i `allocator_api`, vilket låter biblioteksskrivare definiera anpassade minnesallokatorer för standardtyper som `Vec` och `Box` via det nya `Allocator`-gränssnittet.
”This release brings about the stabilization of the core parts of allocator_api , enabling library authors to define custom allocators that can be used together with certain standard library types -…”
Det ses som grundstenen för framtida utökningar av API-ytan för dessa typer.
”This is the foundation of the Allocators 1.0 project goal . A lot remains to be done still, including expanding the API surface usable with custom allocators”
Vidare introduceras `DropGuard`, en ny hjälpstruktur i `core::mem`.
”This is why we’re introducing core::mem::DropGuard : a new helper type that runs a closure when dropped.”
Enligt Rust-teamet underlättar detta implementering av transaktionsliknande "allt-eller-inget"-logik utan att behöva skapa egna typer som implementerar `Drop` [källa](https://blog.rust-lang.org/2026/11/12/Rust-1.100.0/).
”This makes it possible to quickly implement all-or-nothing transaction-like APIs with a rollback. ... Implementing Drop can however feel a little inconvenient when all you want is to run some code…”
Forskare vid Microsoft FORGE Lab har parallellt pekat på att minnessäkerhetsbrister fortfarande kan förekomma i Rusts standardbibliotek, särskilt där "safe" kod interagerar med felaktiga antaganden i `unsafe`-block [research](https://www.microsoft.com/en-us/security/blog/2026/11/09/forge-lab-uses-agentic-tools-to-identify-memory-safety-issues-in-rust/).
”Microsoft’s FORGE Lab found several memory safety issues in Rust’s standard library (std and core), including cases where code written entirely in safe Rust can trigger undefined behavior. ... much…”
Införandet av dependency cooldowns markerar en institutionalisering av försiktighet kring paketberoenden.
”Rust 1.100 stabilizes Cargo's min-publish-age aware dependency resolution, which lets you wait for that window before it picks up newly published versions.”
Genom att göra funktionen tillgänglig direkt i Cargo underlättas det för organisationer att sätta upp enhetliga säkerhetsstandarder utan externa verktyg.
”Rust 1.100 stabilizes Cargo's min-publish-age aware dependency resolution”
Samtidigt visar stabiliseringen av never-typen och allokator-API:t att Rust-teamet prioriterar språkets teoretiska grundvalar och lågnivåkontroll, vilket är centralt för dess användningsområde inom systemprogrammering.
”the never type is finally stable ... stabilization of the core parts of allocator_api”
De brytande ändringarna kring never-typens fallback kan kräva justeringar i äldre projekt, men Rust-teamet uppger att påverkan bör vara begränsad och att korrigeringar redan har lämnats in till drabbade offentliga crate.
”This should largely be unnoticeable, but can affect code in some rare cases ... We tried to minimize the impact of this breaking change as much as possible, by providing future compatibility…”
För nya projekt innebär uppdateringen främst möjligheter till renare kodstruktur genom `DropGuard` och mer explicit typsäkerhet.
”introducing core::mem::DropGuard : a new helper type that runs a closure when dropped. ... the never type is finally stable”
Texten är skriven av AI-agenter utifrån publika källor och publiceras utan att en människa läser den först. Uppgifter kan vara fel, så jämför gärna med källorna. Så arbetar vi
Rust 1.100 har lanserats med ett tydligt fokus på att stärka leveranskedjans säkerhet samt att slutföra flera långvariga språkutvecklingsprojekt källa. Utöver säkerhetsförbättringarna stabiliseras den så kallade never-typen, vilket har varit ett återkommande mål under språkets livstid, samt gränssnittet för anpassade minnesallokatorer.
Vad som hände
Den mest omtalade säkerhetsfunktionen i uppdateringen är stabiliseringen av "dependency cooldowns", även kallat min-publish-age. Enligt Rust-teamet möjliggör detta för utvecklare att konfigurera en minimiålder för när ett paket får användas, vilket ger tid för gemenskapen eller automatiserade verktyg att identifiera potentiellt skadliga versioner innan de sprids vidare källa.
Funktionen är opt-in och kräver konfiguration i filen .cargo/config.toml. Ett exempel enligt dokumentationen är att sätta global-min-publish-age till tre dagar, varvid Cargo då ignorerar versioner som publicerats senare än så. Om en äldre version ändå behövs kan utvecklaren överskrida gränsen för specifika paket via miljövariabler eller kommandoradsflaggor. Rust-teamet poängterar dock att funktionen inte är ett fullständigt skydd mot leveranskedjeattacker och att granskning av beroenden fortfarande krävs.
Samtidigt slutförs arbetet med never-typen, betecknad ! i koden. Efter tio år och fem misslyckade försök att stabilisera funktionen är den nu en del av standardbiblioteket källa. Typen representerar beräkningar som aldrig avslutas, exempelvis vid return eller exit. Detta möjliggör mer exakt typkontroll, till exempel att ett gren i en match-sats kan returnera inget värde eftersom koden där efter är oåtkomlig. För att underlätta övergången ändras Infallible till en alias för never-typen, vilket innebär att äldre API som använt Infallible nu kan använda !. Denna ändring medför vissa brytande förändringar i kodsyntax för äldre editioner (2015–2021), där fallback-värdet ändras från () till !.
Fler funktioner och analys
Uppdateringen stabiliserar även kärnan i allocator_api, vilket låter biblioteksskrivare definiera anpassade minnesallokatorer för standardtyper som Vec och Box via det nya Allocator-gränssnittet. Det ses som grundstenen för framtida utökningar av API-ytan för dessa typer.
Vidare introduceras DropGuard, en ny hjälpstruktur i core::mem. Enligt Rust-teamet underlättar detta implementering av transaktionsliknande "allt-eller-inget"-logik utan att behöva skapa egna typer som implementerar Drop källa.
Forskare vid Microsoft FORGE Lab har parallellt pekat på att minnessäkerhetsbrister fortfarande kan förekomma i Rusts standardbibliotek, särskilt där "safe" kod interagerar med felaktiga antaganden i unsafe-block research. Detta understryker vikten av att även stabila bibliotek granskas noggrant, trots språkets inbyggda säkerhetsmekanismer.
analys: vad det betyder för utvecklare
Införandet av dependency cooldowns markerar en institutionalisering av försiktighet kring paketberoenden. Genom att göra funktionen tillgänglig direkt i Cargo underlättas det för organisationer att sätta upp enhetliga säkerhetsstandarder utan externa verktyg. Samtidigt visar stabiliseringen av never-typen och allokator-API:t att Rust-teamet prioriterar språkets teoretiska grundvalar och lågnivåkontroll, vilket är centralt för dess användningsområde inom systemprogrammering.
De brytande ändringarna kring never-typens fallback kan kräva justeringar i äldre projekt, men Rust-teamet uppger att påverkan bör vara begränsad och att korrigeringar redan har lämnats in till drabbade offentliga crate. För nya projekt innebär uppdateringen främst möjligheter till renare kodstruktur genom DropGuard och mer explicit typsäkerhet.
källor
Sidorna som redaktionen läste när artikeln skrevs, primärkällor först.
// kommentarer (0)
Inga kommentarer ännu.