Vydanie bolo publikované Hrdza 1.96.0 — najnovšia stabilná verzia programovacieho jazyka Rust. Aktualizácia bola vydaná. 28 mája 2026 rok; je možné ho nainštalovať pomocou štandardného príkazu rustup update stable. Medzi hlavné zmeny patria nové typy rozsahov v core::range, stabilizácia makier pre porovnávanie vzorov, sprísnenie správania sa pri zostavovaní WebAssembly a opravy dvoch zraniteľností v Cargo.
Hlavné zmeny
Nové typy rozsahov core::range::Range*.
V štandardnej knižnici boli stabilizované nové typy rozsahov: core::range::Range, RangeFrom, RangeInclusive a ich pridružené iterátory. Na rozdiel od starých typov z core::ops, nové rozsahy neimplementujú Iterator priamo, ale sú konvertované na iterátor pomocou IntoIterator. To umožňuje kopírovanie týchto rozsahov, čo je výhodné napríklad pri ukladaní rozsahu ako štruktúrneho poľa. Syntax ako 0..1 v súčasnosti vytvára staré typy rozsahov, ale v budúcej verzii jazyka sa plánuje jej migrácia na nové typy.Pridané funkcie assert_matches! a debug_assert_matches!.
Nové makrá umožňujú skontrolovať, či hodnota zodpovedá danému vzoru. Je to podobné ako funkcia assert!(matches!(…)), ale v prípade chyby sa vypíše ladiaca reprezentácia hodnoty, čo zjednodušuje diagnostiku. Tieto makrá neboli pridané do Prelude, aby sa predišlo konfliktom s populárnymi balíkmi tretích strán, takže ich je potrebné explicitne importovať z core alebo std.Zmenilo sa správanie cieľov WebAssembly.
Rust už neodovzdáva linkeru parameter --allow-undefined pre zostavenia WebAssembly. Nedefinované symboly sa teraz počas linkovania považujú za chyby, namiesto toho, aby sa automaticky konvertovali na importy z modulu „env“. Toto by malo skôr zachytiť chyby pri zostavovaní a neplatné názvy symbolov. Staré správanie je možné v prípade potreby vrátiť späť pomocou RUSTFLAGS=-Clink-arg=--allow-undefined alebo explicitným zadaním importovaného modulu wasm pomocou #[link(wasm_import_module = "env")].Cargo dostalo bezpečnostné opravy.
Zmeny v jazyku.
Vydanie obsahuje: Niekoľko menších opráv a vylepšení: Povolené odovzdávanie metapremenných expr makier do cfg, opravené pretypovanie typu never vo výrazoch n-tice, opravené zriedkavé prípady nesprávnych inferencií typu pre argumenty funkcií, pridaná podpora pre vektorové registre s390x v inline assembleroch a opätovné povolenie konštánt ManuallyDrop ako šablón – toto opravuje regresiu zavedenú v Ruste 1.94.0.Zmeny v kompilátore a platformách.
pre LinuxPre ciele LoongArch bola povolená podpora uvoľnenia prepojení – optimalizácia prepojenia, ktorá zjednodušuje niektoré prechody a volania po nasadení kódu. Pre riscv64gc-unknown-fuchsia bola základná konfigurácia aktualizovaná na profil RVA22 s podporou vektorových rozšírení.Aktualizácie štandardných knižníc.
Bola pridaná podpora pre iteráciu cez nenulové celočíselné rozsahy. Opravená bola aj lenivá manipulácia s adresami hostiteľov v SGX cez ToSocketAddr a definícia „čitateľnej/zapisovateľnej“ pamäte bola objasnená v dokumentácii a interných zmluvách: nulový ukazovateľ bol odstránený zo všeobecnej definície a výnimky sú teraz špecifikované samostatne pre konkrétne metódy.Stabilizované API.
Medzi stabilizované rozhrania patria assert_matches!, debug_assert_matches!, implementácie From pre AssertUnwindSafe , LazyCell a LazyLock , ako aj nové typy rozsahov a iterátory z core::range, vrátane Range, RangeFrom, RangeToInclusive a ich iterátorov.Cargo: Zmeny závislostí a dokumentácie.
Závislosť teraz môže určovať repozitár Git aj alternatívny register: verzia Git sa použije lokálne a verzia registra sa použije počas publikovania, podobne ako v prípade crates.io. Pridaná bola aj podpora pre target.'cfg(..)'.rustdocflags v konfigurácii Cargo.Rustdoc teraz spracováva dokumentáciu presnejšie.
Zastarané poznámky k API sa teraz vykresľujú ako bežná dokumentácia bez predchádzajúceho špeciálneho spracovania pomocou white-space: pre-wrap. Okrem toho rustdoc už neoveruje missing_doc_code_examples pre prvky vo vnútri impl a metódy a súvisiace funkcie sú teraz oddelené v bočnom paneli dokumentácie.Možné nekompatibility.
Vydanie obsahuje niekoľko zmien, ktoré sa môžu prejaviť v neštandardnom kóde: rozloženie niektorých výčtov #[repr(Int)] bolo v extrémnych prípadoch opravené a niektoré zbytočné pretypovania bez zmeny veľkosti v Pin boli zakázané. , Zostavenia WebAssembly teraz padajú na nedefinovaných symboloch, omylom stabilizovaný atribút #![reexport_test_harness_main] bol opäť zabezpečený funkciami, možnosť -Csoft-float bola odstránená a minimálna externá verzia LLVM bola zvýšená na 21. Pre AVR bol typ c_double zmenený na f32, pretože double v jazyku C sú na týchto cieľoch štandardne 32-bitové.
Zdroj: linux.org.ru
