Release publicerad Rust 1.96.0 â en ny stabil version av programmeringssprĂ„ket Rust. Uppdateringen har slĂ€ppts 28 maj 2026; installation kan göras med det vanliga kommandot rustup update stable. De huvudsakliga förĂ€ndringarna Ă€r nya typer av intervall i core::range, stabilisering av makron för mönsterkontroll, strĂ€ngare beteende för WebAssembly-kompilering och korrigeringar av tvĂ„ sĂ„rbarheter i Cargo.
Viktiga Àndringar
Nya typer av intervall core::range::Range*.
I standardbiblioteket har nya varianter av intervall stabiliserats: core::range::Range, RangeFrom, RangeInclusive och relaterade iteratorer. Till skillnad frÄn Àldre typer frÄn core::ops implementerar de nya intervallen inte Iterator direkt, utan omvandlas till en iterator genom IntoIterator. Tack vare detta kan sÄdana intervall vara Copy, vilket Àr praktiskt, till exempel vid lagring av ett intervall som ett fÀlt i en struktur. Syntaxen 0..1 skapar fortfarande de gamla typerna av intervall, men i en framtida version av sprÄket planeras det att konvertera det till de nya typerna.assert_matches! och debug_assert_matches! har lagts till.
De nya makron gör det möjligt att kontrollera att ett vĂ€rde matchar ett givet mönster. I betydelse liknar detta assert!(matches!(âŠ)), men vid fel visas debug-representationen av vĂ€rdet, vilket underlĂ€ttar diagnosen. Makron har inte lagts till i prelude för att inte skapa konflikter med populĂ€ra externa crate:ar, sĂ„ de mĂ„ste importeras uttryckligen frĂ„n core eller std.Beteendet för WebAssembly-mĂ„l har Ă€ndrats.
Rust skickar inte lĂ€ngre -allow-undefined till lĂ€nkaren för WebAssembly-kompileringar. Nu betraktas ospecificerade symboler vid lĂ€nkning som ett fel, och omvandlas inte automatiskt till importer frĂ„n modulen "env". Detta bör tidigare avslöja byggfel och felaktiga symbolnamn. Det gamla beteendet kan Ă„terstĂ€llas om sĂ„ behövs genom RUSTFLAGS=-Clink-arg=âallow-undefined eller genom att uttryckligen ange den importerade wasm-modulen via #[link(wasm_import_module = "env")]Cargo har fĂ„tt sĂ€kerhetskorrigeringar.
Ăndringar i sprĂ„ket.
I utgĂ„van ingĂ„r nĂ„gra punktfixar och utvidgningar: överföring av expr-makrovariabler till cfg tillĂ„ts, hantering av never-type i tuple-uttryck justeras, sĂ€llsynta fall av felaktiga typutgĂ„ngsĂ„terkopplingar för funktionsargument Ă„tgĂ€rdas, stöd för vektorregister s390x lĂ€ggs till i inline assembly, och det Ă„terigen Ă€r tillĂ„tet att anvĂ€nda konstanter av typen ManuallyDrop som mallar â detta Ă„tgĂ€rdar en regression som uppstod i Rust 1.94.0.Ăndringar i kompilatorn och plattformarna.
För Linux-mĂ„l pĂ„ LoongArch har stöd för lĂ€nkavslappning införts â en lĂ€nkoptimering som förenklar vissa övergĂ„ngar och anrop efter kodplacering. För riscv64gc-unknown-fuchsia har baskonfigurationen uppdaterats till profil RVA22 med stöd för vektorutvidgningar.Uppdateringar av standardbiblioteket.
Stöd för iteration över NonZero-heltalens intervall har lagts till. Dessutom har hanteringen av vÀrdar i SGX genom ToSocketAddr skjutits upp, och i dokumentationen och interna kontrakt har definitionen av minne som "lÀs-/skrivbart" preciserats: nullpekare Àr utesluten frÄn den allmÀnna definitionen, och undantag anges separat för vissa metoder.Stabiliserade API:er.
Bland stabiliserade grÀnssnitt finns assert_matches!, debug_assert_matches!, implementationer av From för AssertUnwindSafe, LazyCell och LazyLock, samt nya typer och intervallsiteratorer frÄn core::range, inklusive Range, RangeFrom, RangeToInclusive och deras iteratorer.Cargo: Àndringar för beroenden och dokumentation.
Nu kan ett beroende ange bĂ„de ett Git-repo och ett alternativt register: den lokala Git-versionen anvĂ€nds, medan versionen frĂ„n registret anvĂ€nds vid publicering, vilket liknar beteendet med crates.io. Stöd för target.âcfg(..)â.rustdocflags har ocksĂ„ lagts till i Cargo-konfigurationen.Rustdoc har blivit mer noggrann i hanteringen av dokumentationen.
Anteckningar om deprecated API renderas nu som vanlig dokumentation, utan tidigare specialbehandling via white-space: pre-wrap. Dessutom ger rustdoc inte lÀngre lint missing_doc_code_examples för element inuti impl, och i dokumentationssidopanelen separeras metoder och associerade funktioner.Möjliga inkompatibiliteter.
I utgÄvan finns flera Àndringar som kan visa sig i ovanlig kod: layouten av vissa #[repr(Int)] enum har korrigerats i extrema fall, vissa onödiga unsize-konverteringar till Pin har förbjudits, WebAssembly-byggen kraschar nu vid odefinierade symboler, den slumpmÀssigt stabiliserade attributet #![reexport_test_harness_main] Àr Äterigen stÀngd bakom en feature gate, parametern -Csoft-float har tagits bort, och den minimi versionen av den externa LLVM har höjts till 21. För AVR har typen c_double Àndrats till f32, eftersom C double som standard Àr 32-bitars pÄ dessa plattformar.
KĂ€lla: linux.org.ru
