Hrdza 1.96.0

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.
    Rust 1.96.0 opravuje dve zraniteľnosti postihujúce používateľov registrov tretích strán. CVE-2026 5223, Súvisiace so spracovaním symbolických odkazov v archívoch crate: škodlivý balík z registra tretej strany by mohol prepísať vyrovnávaciu pamäť iného balíka z rovnakého registra. Počnúc verziou Rust 1.96.0 Cargo odmieta archívy crate obsahujúce symbolické odkazy. CVE-2026 5222, Tento problém sa týka normalizácie URL adries v riedkom registri a za zriedkavých okolností môže viesť k odoslaniu tokenu Cargo do škodlivého registra. Podľa tímu Rust sa používatelia crates.io týmito problémami netýkajú.

  • 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

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster