A kiadvány megjelent Rozsda 1.96.0 — a Rust programozási nyelv legújabb stabil verziója. A frissítés megjelent. 28 May 2026 év; telepíthető a standard rustup update stable paranccsal. A főbb változások közé tartoznak az új tartománytípusok a core::range-ben, a mintaillesztési makrók stabilizálása, a WebAssembly build viselkedésének szigorítása, valamint két Cargo sebezhetőség javítása.
Nagy változások
Új tartománytípusok: core::range::Range*.
Az új tartománytípusokat stabilizálták a standard könyvtárban: core::range::Range, RangeFrom, RangeInclusive, és a hozzájuk tartozó iterátorok. A core::ops régi típusaival ellentétben az új tartományok nem implementálják közvetlenül az Iterátort, hanem az IntoIterator segítségével konvertálódnak iterátorrá. Ez lehetővé teszi, hogy ezek a tartományok másolhatók legyenek, ami például akkor kényelmes, ha egy tartományt struktúra mezőként tárolunk. A 0..1 szintaxishoz hasonló szintaxis jelenleg a régi tartománytípusokat hozza létre, de a tervek szerint a nyelv egy jövőbeli verziójában migrálják az új típusokra.Hozzáadva az assert_matches! és a debug_assert_matches!.
Az új makrók lehetővé teszik annak ellenőrzését, hogy egy érték megfelel-e egy adott mintának. Ez elvileg hasonló az assert!(matches!(…)) utasításhoz, de hiba esetén az érték hibakeresési reprezentációja kerül kinyomtatásra, ami leegyszerűsíti a diagnosztikát. Ezeket a makrókat nem adtuk hozzá a Prelude-hoz, hogy elkerüljük az ütközéseket a népszerű, harmadik féltől származó ládákkal, ezért explicit módon importálni kell őket a magból vagy a standard verzióból.Megváltoztatta a WebAssembly célok viselkedését.
A Rust már nem adja át a --allow-undefined kapcsolót a linkernek a WebAssembly buildeknél. A nem definiált szimbólumokat mostantól hibaként kezeli a linkelés során, ahelyett, hogy automatikusan importáltá konvertálná őket az "env" modulból. Ennek korábban kellene észlelnie a build hibákat és az érvénytelen szimbólumneveket. A régi viselkedés szükség esetén visszaállítható a RUSTFLAGS=-Clink-arg=--allow-undefined használatával, vagy az importált wasm modul explicit megadásával a #[link(wasm_import_module = "env")] használatával.A Cargo biztonsági javításokat kapott.
Változások a nyelvben.
A kiadás a következőket tartalmazza: Számos kisebb javítás és fejlesztés: Lehetővé vált a makrók expr metaváltozóinak átadása a cfg-nek, korrigáltuk a soha nem típusátalakítást a tuple kifejezésekben, kijavítottuk a függvényargumentumok helytelen típuskövetkeztetési tippjeinek ritka eseteit, hozzáadtuk az s390x vektorregiszterek támogatását az inline assemblyben, és újra engedélyeztük a ManuallyDrop konstansok sablonként való használatát – ez kijavít egy, a Rust 1.94.0-ban bevezetett regressziót.Változások a fordítóban és a platformokban.
mert LinuxA LoongArch célokhoz engedélyezve lett a link relaxációs támogatása – ez egy linkoptimalizálás, amely leegyszerűsít bizonyos átmeneteket és hívásokat a kód telepítése után. A riscv64gc-unknown-fuchsia esetében az alapkonfiguráció frissült az RVA22 profilra, amely támogatja a vektorbővítményeket.Standard könyvtári frissítések.
Hozzáadtuk a nem nulla egész tartományokon átívelő iteráció támogatását. Kijavítottuk a ToSocketAddr-on keresztüli host címek lusta kezelését SGX-ben, és pontosítottuk az „olvasható/írható” memória definícióját a dokumentációban és a belső szerződésekben: a null mutatót eltávolítottuk az általános definícióból, és a kivételek mostantól külön vannak megadva az egyes metódusokhoz.Stabilizált API-k.
A stabilizált interfészek között megtalálhatók az assert_matches!, a debug_assert_matches!, valamint a From implementációi. az AssertUnwindSafe számára , LazyCell és LazyLock , valamint az új tartománytípusokat és iterátorokat a core::range tömbből, beleértve a Range, RangeFrom, RangeToInclusive típusokat és azok iterátorait.Cargo: Változások a függőségekben és a dokumentációban.
Egy függőség mostantól megadhat egy Git repositoryt és egy alternatív beállításjegyzéket is: a Git verziója lesz használva helyben, a beállításjegyzék verziója pedig a közzététel során, hasonlóan a crates.io viselkedéséhez. A target.'cfg(..)'.rustdocflags támogatása is hozzáadásra került a Cargo konfigurációban.A Rustdoc mostantól pontosabban kezeli a dokumentációt.
Az elavult API-megjegyzések mostantól normál dokumentációként jelennek meg, a korábbi speciális white-space: pre-wrap feldolgozás nélkül. Ezenkívül a rustdoc már nem sömöríti a missing_doc_code_examples értéket az impl-en belüli elemekhez, a metódusok és a kapcsolódó függvények pedig mostantól elkülönítve jelennek meg a dokumentációs oldalsávon.Lehetséges összeférhetetlenségek.
A kiadás számos olyan változást tartalmaz, amelyek nem szabványos kódban is megjelenhetnek: néhány #[repr(Int)] enum elrendezését szélsőséges esetekben kijavították, és néhány haszontalan méretezési konverziót letiltottak a Pinben. A WebAssembly buildek mostantól összeomlanak nem definiált szimbólumoknál, a véletlenül stabilizált #![reexport_test_harness_main] attribútumot ismét funkciókorlátozás alá helyezték, a -Csoft-float opciót eltávolították, és a minimális külső LLVM verziót 21-re növelték. AVR esetén a c_double típust f32-re módosították, mivel a C double-ök alapértelmezés szerint 32 bitesek ezeken a célokon.
Forrás: linux.org.ru
