Vydání bylo zveřejněno Rez 1.96.0 — nejnovější stabilní verze programovacího jazyka Rust. Aktualizace byla vydána. 28 května 2026 rokLze jej nainstalovat pomocí standardního příkazu rustup update stable. Mezi hlavní změny patří nové typy rozsahů v core::range, stabilizace maker pro porovnávání vzorů, zpřísnění chování sestavení WebAssembly a opravy dvou zranitelností v Cargo.
Hlavní změny
Nové typy rozsahů core::range::Range*.
Ve standardní knihovně byly stabilizovány nové typy rozsahů: core::range::Range, RangeFrom, RangeInclusive a jejich přidružené iterátory. Na rozdíl od starých typů z core::ops nové rozsahy neimplementují Iterator přímo, ale jsou převedeny na iterátor pomocí IntoIterator. To umožňuje kopírování těchto rozsahů, což je výhodné například při ukládání rozsahu jako strukturního pole. Syntaxe jako 0..1 v současné době vytváří staré typy rozsahů, ale v budoucí verzi jazyka se plánuje jejich migrace na nové typy.Přidány assert_matches! a debug_assert_matches!.
Nová makra umožňují ověřit, zda hodnota odpovídá danému vzoru. Koncept je podobný jako u funkce assert!(matches!(…)), ale v případě chyby se vypíše ladicí reprezentace hodnoty, což zjednodušuje diagnostiku. Tato makra nebyla do Prelude přidána, aby se předešlo konfliktům s oblíbenými balíčky třetích stran, takže je nutné je explicitně importovat z core nebo std.Změněno chování cílů WebAssembly.
Rust již nepředává linkeru --allow-undefined pro sestavení WebAssembly. Nedefinované symboly jsou nyní během linkování považovány za chyby, a nebudou automaticky převedeny na importy z modulu „env“. Toto by mělo dříve zachytit chyby sestavení a neplatné názvy symbolů. Staré chování lze v případě potřeby vrátit zpět pomocí RUSTFLAGS=-Clink-arg=--allow-undefined nebo explicitním zadáním importovaného modulu WASM pomocí #[link(wasm_import_module = "env")].Cargo obdrželo bezpečnostní opravy.
Změny v jazyce.
Vydání obsahuje: Několik drobných oprav a vylepšení: Povoleno předávání metaproměnných expr maker do cfg, opraveno přetypování typu never ve výrazech n-tic, opraveny vzácné případy nesprávných nápověd k odvození typů pro argumenty funkcí, přidána podpora pro vektorové registry s390x v inline assembleru a znovu povoleny konstanty ManuallyDrop jako šablony – oprava regrese zavedené v Rustu 1.94.0.Změny v kompilátoru a platformách.
pro LinuxPro cíle LoongArch byla povolena podpora propojení – optimalizace propojení, která zjednodušuje některé přechody a volání po nasazení kódu. Pro riscv64gc-unknown-fuchsia byla základní konfigurace aktualizována na profil RVA22 s podporou vektorových rozšíření.Aktualizace standardních knihoven.
Byla přidána podpora pro iteraci přes nenulové celočíselné rozsahy. Byla také opravena líná manipulace s adresami hostitelů v SGX pomocí ToSocketAddr a v dokumentaci a interních smlouvách byla vyjasněna definice „čitatelné/zapisovatelné“ paměti: z obecné definice byl odstraněn nulový ukazatel a výjimky jsou nyní specifikovány samostatně pro konkrétní metody.Stabilizovaná API.
Mezi stabilizovaná rozhraní patří assert_matches!, debug_assert_matches! a implementace From... pro AssertUnwindSafe , LazyCell a LazyLock , stejně jako nové typy rozsahů a iterátory z core::range, včetně Range, RangeFrom, RangeToInclusive a jejich iterátorů.Cargo: Změny závislostí a dokumentace.
Závislost nyní může specifikovat jak repozitář Git, tak alternativní registr: verze Git bude použita lokálně a verze registru bude použita během publikování, podobně jako u crates.io. Byla také přidána podpora pro target.'cfg(..)'.rustdocflags v konfiguraci Cargo.Rustdoc nyní zpracovává dokumentaci přesněji.
Zastaralé poznámky k API jsou nyní vykreslovány jako běžná dokumentace, bez předchozího speciálního zpracování pomocí white-space: pre-wrap. Rustdoc navíc již neověřuje missing_doc_code_examples pro prvky uvnitř impl a metody a související funkce jsou nyní odděleny v postranním panelu dokumentace.Možné nekompatibility.
Tato verze obsahuje několik změn, které se mohou projevit v nestandardním kódu: v extrémních případech bylo opraveno rozvržení některých výčtů #[repr(Int)] a některé zbytečné přetypování bez změny velikosti v Pinu byly zakázány. , sestavení WebAssembly nyní padá na nedefinovaných symbolech, omylem stabilizovaný atribut #![reexport_test_harness_main] byl opět chráněn funkcemi, možnost -Csoft-float byla odstraněna a minimální externí verze LLVM byla zvýšena na 21. Pro AVR byl typ c_double změněn na f32, protože double kódy jazyka C jsou na těchto cílech ve výchozím nastavení 32bitové.
Zdroj: linux.org.ru
