Megjelent a kiadás Rust 1.96.0 — a legújabb stabil verziója a Rust programozási nyelvnek. A frissítés megjelent 2026. május 28-án; telepítése a standard rustup update stable parancs használatával lehetséges. A legfőbb változások új tartománytípusok bevezetése a core::range-ben, stabilizált makrók minták ellenőrzésére, a WebAssembly-kiadások viselkedésének szigorítása és két sérülékenység javítása a Cargo rendszerben.
Főbb változások
Új tartománytípusok a core::range::Range*-ban.
A standard könyvtárban stabilizálták az új tartományváltozatokat: core::range::Range, RangeFrom, RangeInclusive és a hozzájuk kapcsolódó iterátorokat. A régi core::ops típusokkal ellentétben az új tartományok nem valósítják meg közvetlenül az Iterator-t, hanem IntoIterator-en keresztül alakulnak át iterátorrá. Ennek köszönhetően ezek a tartományok Copy típusúak lehetnek, ami kényelmes, például amikor egy tartományt struktúra mezőjeként tárolunk. Az olyan szintaxis, mint a 0..1, egyelőre a régi tartománytípusokat hozza létre, de a nyelv jövőbeli kiadásában tervezzük, hogy átállunk az új típusokra.Hozzáadva az assert_matches! és debug_assert_matches!-t.
Az új makrók lehetővé teszik, hogy ellenőrizzük, hogy az érték megfelel-e a megadott mintának. Ez lényegében hasonló az assert!(matches!(…))-hez, de hiba esetén az érték Debug-reprezentációját jeleníti meg, ami megkönnyíti a diagnózist. A prelude-ban nem adták hozzá a makrókat, hogy ne ütközzenek népszerű külső crate-ekkel, ezért ezeket kifejezetten importálni kell a core-ból vagy a std-ből.Megváltozott a WebAssembly célok viselkedése.
A Rust többé nem adja át a linkernek a —allow-undefined-ot a WebAssembly-kiadásokhoz. Most a definíció nélküli szimbólumok linkelése hibaüzenetet generál, és nem alakulnak át automatikusan az "env" modulból származó importokká. Ennek célja, hogy korábban felfedje a buildhibákat és a helytelen szimbólumneveket. A régi viselkedést szükség esetén vissza lehet állítani a RUSTFLAGS=-Clink-arg=—allow-undefined paranccsal, vagy kifejezetten megadhatjuk az importálandó wasm-modult a #[link(wasm_import_module = "env")] direktívával.A Cargo biztonsági javításokat kapott.
Változások a nyelvben.
A kiadás része több apró javítás és bővítés: engedélyezve van az expr-metamátrixok átadása a cfg-nek, a never-típus kódolása javítva lett a tuple kifejezésekben, kijavítva néhány ritka esetben előforduló hibás típuskiadás javaslat a függvényargumentumoknál, hozzáadva a s390x vektoregiszterek támogatása inline assembly-hez, valamint ismét engedélyezve van a ManuallyDrop típusú konstansok sablonként való használata — ez javítja a Rust 1.94.0-ben bekövetkezett regressziót.Változások a fordítóban és a platformokon.
Linux célokra a LoongArch-on engedélyezve lett a link relaxation támogatása — a linkelés optimalizálása, amely lehetővé teszi a kód elhelyezése utáni néhány ugrás és hivatkozás egyszerűsítését. A riscv64gc-unknown-fuchsia esetében az alap konfiguráció frissítve lett a RVA22 profilra, amely támogatja a vektorbővítményeket.A standard könyvtár frissítései.
Hozzáadva a NonZero egész számok intervallumán való iteráció támogatása. Továbbá javítva lett a hoszt címek késleltetett feldolgozása SGX-en keresztül a ToSocketAddr segítségével, és a dokumentációban, valamint a belső szerződésekben pontosítva lett a 'olvasható/írható' memória meghatározása: a null pointer ki lett zárva az általános meghatározásból, és a kivételeket külön feltüntetik a konkrét metódusok számára.Stabilizált API-k.
A stabilizált interfészek között szerepel az assert_matches!, debug_assert_matches!, az AssertUnwindSafe<T> számára készült From<T> megvalósítások, LazyCell<T, F> és LazyLock<T, F>, valamint új típusok és intervallumok iterátorai a core::range-ből, beleértve a Range, RangeFrom, RangeToInclusive és azok iterátorait.Cargo: változások a függőségek és a dokumentáció terén.
Mostantól a függőség egyszerre utalhat Git-tárhelyre és alternatív registry-re: lokálisan a Git verziót használja, míg publikáláskor a registry-beli verziót, hasonlóan a crates.io viselkedéséhez. Hozzáadva a target.’cfg(..)’.rustdocflags támogatása a Cargo konfigurációban.A rustdoc gondosabban kezeli a dokumentációt.
A deprecated API-król szóló megjegyzések mostantól úgy jelennek meg, mint a normál dokumentáció, a korábbi fehér tér által végzett különleges feldolgozás nélkül. Ezenkívül a rustdoc már nem ad lint missing_doc_code_examples hibát az impl-en belüli elemek esetében, és a dokumentációs oldalsávban a metódusokat és az asszociált függvényeket külön-külön választják el.Lehetséges inkompatibilitások.
A kiadásban több változás van, amelyek nem szokványos kód esetén megjelenhetnek: javítva lett néhány #[repr(Int)] enum elrendezés szélsőséges esetekben, egyes haszontalan unsize átalakítások a Pin-ban tiltotta, a WebAssembly-gyűjtemények mostantól leállnak határozatlan szimbólumoknál, a véletlenszerűen stabilizált #![reexport_test_harness_main] attribútumot ismét letiltotta a feature gate, eltávolították a -Csoft-float paramétert, és a külső LLVM minimális verziója 21-re emelkedett. Az AVR-nél a c_double típust f32-re változtatták, mivel ezeknél a céloknál a C double alapértelmezés szerint 32 bites.
Forrás: linux.org.ru
