Izlaidums ir publicēts 1.96.0. rūsa — jaunākā stabilā Rust programmēšanas valodas versija. Atjauninājums ir izlaists. 28 maijā 2026 gads; to var instalēt, izmantojot standarta rustup update stable komandu. Galvenās izmaiņas ietver jaunus diapazona tipus core::range, modeļu saskaņošanas makro stabilizēšanu, WebAssembly būvēšanas darbības pastiprināšanu un divu Cargo ievainojamību labojumus.
Galvenās izmaiņas
Jauni diapazona tipi core::range::Range*.
Standarta bibliotēkā ir stabilizēti jauni diapazona tipi: core::range::Range, RangeFrom, RangeInclusive un ar tiem saistītie iteratori. Atšķirībā no vecajiem tipiem no core::ops, jaunie diapazoni tieši neievieš Iteratoru, bet gan tiek konvertēti par iteratoru, izmantojot IntoIterator. Tas ļauj šos diapazonus kopēt, kas ir ērti, piemēram, saglabājot diapazonu kā struktūras lauku. Sintakse, piemēram, 0..1, pašlaik veido vecos diapazona tipus, taču ir plānots tos migrēt uz jaunajiem tipiem valodas nākamajā versijā.Pievienotas assert_matches! un debug_assert_matches!.
Jauni makro ļauj pārbaudīt, vai vērtība atbilst dotajam modelim. Pēc būtības tas ir līdzīgs assert!(matches!(…)), bet kļūdas gadījumā tiek izdrukāts vērtības atkļūdošanas attēlojums, vienkāršojot diagnostiku. Šie makro netika pievienoti Prelude, lai izvairītos no konfliktiem ar populāriem trešo pušu crates, tāpēc tie ir jāimportē tieši no pamata vai standarta versijas.Mainīta WebAssembly mērķu darbība.
Rust vairs nenodod --allow-undefined saistīšanas procesam WebAssembly veidojumos. Nedefinēti simboli tagad saistīšanas laikā tiek uzskatīti par kļūdām, nevis automātiski konvertēti par importētiem no moduļa "env". Tam vajadzētu agrāk pamanīt veidošanas kļūdas un nederīgus simbolu nosaukumus. Veco darbību var atjaunot, ja nepieciešams, izmantojot RUSTFLAGS=-Clink-arg=--allow-undefined vai skaidri norādot importēto wasm moduli, izmantojot #[link(wasm_import_module = "env")].Kravai ir veikti drošības labojumi.
Izmaiņas valodā.
Izlaidumā iekļauts: Vairāki nelieli labojumi un uzlabojumi: Atļauta makro expr metamainīgo nodošana cfg, labota nekad-tipa pārveidošana korteža izteiksmēs, novērsti reti gadījumi ar nepareizām tipa secinājumu norādēm funkciju argumentiem, pievienots atbalsts s390x vektoru reģistriem iekļautajā montāžā un atkārtoti atļautas ManuallyDrop konstantes kā veidnes — tas novērš regresijas kļūdu, kas ieviesta Rust 1.94.0 versijā.Izmaiņas kompilatorā un platformās.
Par LinuxLoongArch mērķiem ir iespējots saišu relaksācijas atbalsts — saistīšanas optimizācija, kas vienkāršo dažas pārejas un izsaukumus pēc koda izvietošanas. riscv64gc-unknown-fuchsia bāzes konfigurācija ir atjaunināta uz RVA22 profilu ar atbalstu vektoru paplašinājumiem.Standarta bibliotēkas atjauninājumi.
Pievienots atbalsts iterācijai veselu skaitļu diapazonos, kas nav nulles. Ir izlabota arī slinka resursdatora adrešu apstrāde SGX, izmantojot ToSocketAddr, un dokumentācijā un iekšējos līgumos ir precizēta "lasāmas/rakstāmas" atmiņas definīcija: nulles rādītājs ir noņemts no vispārīgās definīcijas, un izņēmumi tagad ir norādīti atsevišķi konkrētām metodēm.Stabilizētas API.
Starp stabilizētajām saskarnēm ir assert_matches!, debug_assert_matches!, From implementācijas AssertUnwindSafe , LazyCell un LazyLock , kā arī jauni diapazonu tipi un iteratori no core::range, tostarp Range, RangeFrom, RangeToInclusive un to iteratori.Krava: Izmaiņas atkarībās un dokumentācijā.
Atkarība tagad var norādīt gan Git repozitoriju, gan alternatīvu reģistru: Git versija tiks izmantota lokāli, un reģistra versija tiks izmantota publicēšanas laikā, līdzīgi kā ar crates.io. Pievienots arī atbalsts target.'cfg(..)'.rustdocflags Cargo konfigurācijā.Rustdoc tagad precīzāk apstrādā dokumentāciju.
Novecojušas API piezīmes tagad tiek atveidotas kā parasta dokumentācija, bez iepriekšējās īpašās apstrādes, izmantojot atstarpju iepriekšēju ietīšanu. Turklāt rustdoc vairs neveido missing_doc_code_examples elementiem impl iekšpusē, un metodes un saistītās funkcijas tagad ir atdalītas dokumentācijas sānu joslā.Iespējamās nesaderības.
Šajā laidienā ir iekļautas vairākas izmaiņas, kas var parādīties nestandarta kodā: dažu #[repr(Int)] uzskaitījumu izkārtojums ir labots ārkārtas gadījumos, un dažas bezjēdzīgas izmēra maiņas operācijas Pin ir atspējotas. , WebAssembly būvējumi tagad avarē, ja tiek izmantoti nedefinēti simboli, nejauši stabilizētais #![reexport_test_harness_main] atribūts atkal ir ierobežots līdz funkcijām, opcija -Csoft-float ir noņemta un minimālā ārējās LLVM versija ir palielināta līdz 21. AVR gadījumā c_double tips ir mainīts uz f32, jo C dubultkodi šiem mērķiem pēc noklusējuma ir 32 bitu.
Avots: linux.org.ru
