Izdanje je objavljeno Rđa 1.96.0 — najnovija stabilna verzija programskog jezika Rust. Ažuriranje je objavljeno. 28 svibnja 2026 godine; može se instalirati pomoću standardne naredbe rustup update stable. Glavne promjene uključuju nove tipove raspona u core::range, stabilizaciju makroa za usklađivanje uzoraka, pooštravanje ponašanja izgradnje WebAssemblyja i ispravke za dvije ranjivosti u Cargu.
Velike promjene
Novi tipovi raspona core::range::Range*.
Novi tipovi raspona stabilizirani su u standardnoj biblioteci: core::range::Range, RangeFrom, RangeInclusive i njihovi pridruženi iteratori. Za razliku od starih tipova iz core::ops, novi rasponi ne implementiraju Iterator izravno, već se pretvaraju u iterator putem IntoIterator. To omogućuje kopiranje ovih raspona, što je praktično, na primjer, prilikom pohranjivanja raspona kao strukturnog polja. Sintaksa poput 0..1 trenutno stvara stare tipove raspona, ali planira se migracija na nove tipove u budućoj verziji jezika.Dodani su assert_matches! i debug_assert_matches!.
Novi makroi omogućuju vam provjeru podudara li se vrijednost s zadanim uzorkom. Ovo je slično konceptu kao assert!(matches!(…)), ali u slučaju pogreške ispisuje se debug prikaz vrijednosti, što pojednostavljuje dijagnostiku. Ovi makroi nisu dodani u Prelude kako bi se izbjegli sukobi s popularnim paketima trećih strana, pa ih je potrebno eksplicitno uvesti iz core-a ili std-a.Promijenjeno je ponašanje WebAssembly ciljeva.
Rust više ne prosljeđuje --allow-undefined povezivaču za WebAssembly verzije. Nedefinirani simboli sada se tretiraju kao pogreške tijekom povezivanja, umjesto da se automatski pretvaraju u uvoze iz modula "env". Ovo bi trebalo ranije prepoznati pogreške u izgradnji i nevažeća imena simbola. Staro ponašanje se može vratiti, ako je potrebno, korištenjem RUSTFLAGS=-Clink-arg=--allow-undefined ili eksplicitnim navođenjem uvezenog wasm modula korištenjem #[link(wasm_import_module = "env")].Cargo je dobio sigurnosne ispravke.
Promjene u jeziku.
Izdanje uključuje: Nekoliko manjih ispravaka i poboljšanja: Omogućeno je prosljeđivanje metavarijabli expr makroa u cfg, ispravljeno je never-type casting u tuple izrazima, ispravljeni su rijetki slučajevi netočnih savjeta o zaključivanju tipova za argumente funkcije, dodana je podrška za s390x vektorske registre u inline asembleru i ponovno su dopuštene konstante ManuallyDrop kao predlošci - ovo ispravlja regresiju uvedenu u Rustu 1.94.0.Promjene u kompajleru i platformama.
za LinuxPodrška za opuštanje poveznica omogućena je za LoongArch ciljeve - optimizacija povezivanja koja pojednostavljuje neke prijelaze i pozive nakon implementacije koda. Za riscv64gc-unknown-fuchsia, osnovna konfiguracija ažurirana je na RVA22 profil s podrškom za vektorska proširenja.Standardna ažuriranja biblioteke.
Dodana je podrška za iteraciju preko cijelih brojeva koji nisu nula. Također je ispravljeno lijeno rukovanje adresama hostova u SGX-u putem ToSocketAddr-a, a definicija "čitljive/pisive" memorije je pojašnjena u dokumentaciji i internim ugovorima: nulti pokazivač je uklonjen iz opće definicije, a iznimke se sada navode zasebno za određene metode.Stabilizirani API-ji.
Među stabiliziranim sučeljima su assert_matches!, debug_assert_matches!, implementacije From za AssertUnwindSafe , LazyCell i LazyLock , kao i nove tipove raspona i iteratore iz core::range, uključujući Range, RangeFrom, RangeToInclusive i njihove iteratore.Cargo: Promjene ovisnosti i dokumentacije.
Ovisnost sada može specificirati i Git repozitorij i alternativni registar: Git verzija će se koristiti lokalno, a verzija registra će se koristiti tijekom objavljivanja, slično ponašanju s crates.io. Dodana je i podrška za target.'cfg(..)'.rustdocflags u konfiguraciji Cargoa.Rustdoc sada preciznije obrađuje dokumentaciju.
Zastarjele API bilješke sada se prikazuju kao redovna dokumentacija, bez prethodne posebne obrade putem white-space: pre-wrap. Osim toga, rustdoc više ne prati missing_doc_code_examples za elemente unutar impl-a, a metode i povezane funkcije sada su odvojene u bočnoj traci dokumentacije.Moguće nekompatibilnosti.
Izdanje sadrži nekoliko promjena koje se mogu pojaviti u nestandardnom kodu: raspored nekih #[repr(Int)] nabrajanja je ispravljen u ekstremnim slučajevima, a onemogućena su neka beskorisna pretvaranja bez promjene veličine u Pinu. , WebAssembly verzije sada se ruše na nedefiniranim simbolima, slučajno stabilizirani atribut #![reexport_test_harness_main] ponovno je ograničen značajkama, opcija -Csoft-float je uklonjena, a minimalna vanjska LLVM verzija je povećana na 21. Za AVR, tip c_double je promijenjen u f32, budući da su C double-ovi prema zadanim postavkama 32-bitni na tim ciljevima.
Izvor: linux.org.ru
