Zverejnená verzia Rust 1.96.0 — novej stabilnej verzii programovacieho jazyka Rust. Aktualizácia bola vydaná 28. mája 2026; nainštalovať ho možno pomocou štandardného príkazu rustup update stable. Hlavnými zmenami sú nové typy rozhraní v core::range, stabilizácia makier na overovanie zhody vzorom, sprísnenie správania WebAssembly buildov a opravy dvoch zraniteľností v Cargo.
Hlavné zmeny
Nové typy rozhraní core::range::Range*.
V štandardnej knižnici boli stabilizované nové varianty rozhraní: core::range::Range, RangeFrom, RangeInclusive a s nimi súvisiace iterátory. Na rozdiel od starých typov z core::ops, nové rozhrania nepriamo implementujú Iterator, ale konvertujú sa na iterátor cez IntoIterator. Vďaka tomu môžu byť takéto rozhrania typu Copy, čo je praktické, napríklad pri uchovávaní rozhrania ako poľa štruktúry. Syntax ako 0..1 zatiaľ vytvára staré typy rozhraní, ale v budúcej edícii jazyka sa plánuje prechod na nové typy.Pridané assert_matches! a debug_assert_matches!.
Nové makrá umožňujú overiť, že hodnota zodpovedá danému vzoru. Po zmysle je to podobné ako assert!(matches!(…)), ale pri chybe sa zobrazí Debug reprezentácia hodnoty, čo uľahčuje diagnostiku. Do prelude neboli pridané makrá, aby sa predišlo konfliktom s populárnymi externými crate’ami, takže ich treba explicitne importovať z core alebo std.Zmenené správanie WebAssembly cieľov.
Rust už viac nepodáva linkeru —allow-undefined pre WebAssembly buildy. Teraz sa neznáme symboly pri linkovaní považujú za chybu, a nie sú automaticky transformované na importy z modulu "env". To by malo skôr odhaliť chyby pri zostavovaní a nesprávne názvy symbolov. Staré správanie možno v prípade potreby vrátiť cez RUSTFLAGS=-Clink-arg=—allow-undefined alebo explicitným určením importovaného wasm modulu cez #[link(wasm_import_module = "env")].Cargo dostal opravy bezpečnosti.
Zmeny v jazyku.
Do vydania boli zahrnuté niekoľko bodových opráv a rozšírení: povolený prenos expr-metavariabilných makrosúborov do cfg, upravené prevody never-type vo výrazoch-tuploch, opravené zriedkavé prípady nesprávnych podnetov výstupných typov pre argumenty funkcií, pridaná podpora vektorových registrov s390x v inline assembly, a tiež opäť povolené používanie konštánt typu ManuallyDrop ako šablón - to opravuje regresiu, ktorá sa objavila v Rust 1.94.0.Zmeny v kompilátore a platformách.
Pre Linuxové ciele na LoongArch bola pridaná podpora link relaxation - optimalizácie linkovania, ktorá umožňuje zjednodušiť niektoré prechody a prístupy po umiestnení kódu. Pre riscv64gc-unknown-fuchsia bola aktualizovaná základná konfigurácia na profil RVA22 s podporou vektorových rozšírení.Aktualizácie štandardnej knižnice.
Pridaná podpora iterácie po rozsahoch NonZero-celých čísel. Taktiež bola opravená odložená správa adries hostiteľa v SGX cez ToSocketAddr, a v dokumentácii a vnútorných zmluvách bolo upresnené definovanie pamäte, "prijateľnej na čítanie/zápis": nulový ukazovateľ bol vylúčený z celkového definovania, a výnimky sú uvedené samostatne pre konkrétne metódy.Stabilizované API.
Medzi stabilizovanými rozhraniami sú - assert_matches!, debug_assert_matches!, implementácie From pre AssertUnwindSafe, LazyCell a LazyLock, ako aj nové typy a iterátory rozsahov z core::range, vrátane Range, RangeFrom, RangeToInclusive a ich iterátorov.Cargo: zmeny pre závislosti a dokumentáciu.
Teraz môže závislosť súčasne ukazovať na Git-repozitár a alternatívny registry: lokálne sa bude používať verzia Git a pri publikovaní verzia z registry, podobne ako správanie s crates.io. Taktiež bola pridaná podpora target.’cfg(..)’.rustdocflags v konfigurácii Cargo.Rustdoc začal starostlivejšie spracovávať dokumentáciu.
Poznámky o deprecated API teraz sa renderujú ako obyčajná dokumentácia, bez predchádzajúceho osobitného spracovania cez white-space: pre-wrap. Okrem toho, rustdoc už nevydáva lint missing_doc_code_examples pre prvky v impl, a v bočnom paneli dokumentácie sú metódy a asociované funkcie rozdelené samostatne.Možné nekompatibility.
V vydaní sú niektoré zmeny, ktoré sa môžu prejaviť na netypickom kóde: opravili sa rozložení niektorých #[repr(Int)] enum v extrémnych prípadoch, zakázali sa niektoré zbytočné unsize konverzie v Pin, WebAssembly zostavy teraz zlyhávajú pri neurčitých symboloch, náhodne stabilizovaný atribút #![reexport_test_harness_main] je opäť uzavretý feature gateom, parameter -Csoft-float bol odstránený a minimálna verzia externého LLVM bola zvýšená na 21. Pre AVR bol typ c_double zmenený na f32, keďže na týchto cieľoch je C double predvolene 32-bitový.
Zdroj: linux.org.ru
