Rust 1.96.0

Publicēts izlaiÅ”ana Rust 1.96.0 — jaunākajā stabilajā versijā programmēŔanas valodas Rust. Atjauninājums iznācis 2026. gada 28. maiju; to var instalēt ar standarta komandu rustup update stable. Galvenās izmaiņas ir jauni diapazona tipi core::range, makro stabilizācija veidņu atbilstÄ«bas pārbaudēm, WebAssembly kompilāciju uzvedÄ«bas pastiprināŔana un divu ievainojamÄ«bu labojumi Cargo.

Galvenās izmaiņas

  • Jauni diapazona tipi core::range::Range*.
    Standarta bibliotēkā ir stabilizēti jauni diapazona varianti: core::range::Range, RangeFrom, RangeInclusive un ar to saistÄ«tie iteratori. AtŔķirÄ«bā no vecajiem tipi no core::ops, jauni diapazoni tieÅ”i neÄ«steno Iterator, bet pārvērÅ”as iterācijā caur IntoIterator. Tas ļauj Å”iem diapazoniem bÅ«t Copy, kas ir ērti, piemēram, uzglabājot diapazonu kā struktÅ«ras lauku. Sintakse, piemēram, 0..1, joprojām veido vecos diapazona tipus, bet nākamajā valodas izdevumā plāno to pārvērst jaunajos tipos.

  • Pievienoti assert_matches! un debug_assert_matches!.
    Jauni makro ļauj pārbaudÄ«t, vai vērtÄ«ba atbilst noteiktam veidam. Jēdziens ir lÄ«dzÄ«gs assert!(matches!(…)), bet kļūdas gadÄ«jumā tiek izvadÄ«ts Debug attēlojums, kas atvieglo diagnostiku. Prelude makros netika pievienoti, lai nekonfliktētu ar populāriem treÅ”o puÅ”u crate, tādēļ tos jāimportē skaidri no core vai std.

  • MainÄ«ta WebAssembly mērÄ·is uzvedÄ«ba.
    Rust vairs neizniedz linkerim —allow-undefined WebAssembly kompilācijām. Tagad nenoteiktas simbols tiek uzskatÄ«ts par kļūdu saistīŔanā, nevis automātiski pārvērÅ”as importos no moduļa "env". Tas agrāk atklās kompilācijas kļūdas un nepareizos simbolu nosaukumus. Veco uzvedÄ«bu vajadzÄ«bas gadÄ«jumā var atjaunot ar RUSTFLAGS=-Clink-arg=—allow-undefined vai skaidri norādÄ«t importēto wasm moduli, izmantojot #[link(wasm_import_module = "env")] .

  • Cargo saņēma droŔības labojumus.
    Rust 1.96.0 ir novērstas divas ievainojamÄ«bas, kas skāra treÅ”o puÅ”u reÄ£istru lietotājus. CVE-2026-5223 ir saistÄ«ta ar symlink apstrādi tar arhÄ«vā crate: ļaunprātÄ«gs pakotne no treÅ”o puÅ”u reÄ£istra varēja pārrakstÄ«t cita pakotne keÅ”atmiņu no tā paÅ”a reÄ£istra. Sākot no Rust 1.96.0, Cargo noraida crate arhÄ«vus ar symlink. CVE-2026-5222 ir saistÄ«ta ar sparse reÄ£istra URL normalizāciju un retākos gadÄ«jumos varēja novest pie Cargo tokena nosÅ«tīŔanas ļaunprātÄ«gā reÄ£istrā. Crates.io lietotāji, pēc Rust komandas teiktā, Ŕīm problēmām nav bijusi pakļauti.

  • Izmaiņas valodā.
    Izlaidumā ir iekļauti daži punktu labojumi un paplaÅ”inājumi: atļauta expr-metaparametru nodoÅ”ana makroskopiem cfg, koriģēta never-tipa pārvērÅ”ana izteiksmēs-tuple, laboti reti gadÄ«jumi nepareizām tipu izsakoÅ”anas norādēm funkciju argumentiem, pievienota atbalsts vektoru reÄ£istriem s390x iekŔējā assembly, kā arÄ« atkal atļauts izmantot ManuallyDrop tipa konstantes kā veidnes — tas novērÅ” regresiju, kas parādÄ«jās Rust 1.94.0.

  • Izmaiņas kompilatorā un platformās.
    Lai Linux mērÄ·iem uz LoongArch pievienots saistÄ«bu relaksācijas atbalsts — sasaistes optimizācija, kas ļauj vienkārÅ”ot dažus pārejas un izsaukumus pēc koda izvietoÅ”anas. Lay riscv64gc-unknown-fuchsia pamatkonfigurācija atjaunināta uz RVA22 profilu ar vektoru paplaÅ”inājumu atbalstu.

  • Standarta bibliotēkas atjauninājumi.
    Pievienots atbalsts iterācijai pār NonZero veseliem skaitļiem. Tāpat labota aizkavēta saimniekdatoru adresācijas apstrāde SGX caur ToSocketAddr, un dokumentācijā un iekŔējos lÄ«gumos precizēts atmiņas definējums, "lasīŔanas/rakstīŔanas pieļaujama": nulles rādÄ«tājs izslēgts no vispārējās definÄ«cijas, un izņēmumi norādÄ«ti atseviŔķi konkrētām metodēm.

  • Stabilizētās API.
    Starp stabilizētajiem saskarnēm ir assert_matches!, debug_assert_matches!, From<T> implementācijas AssertUnwindSafe<T>, LazyCell<T, F> un LazyLock<T, F>, kā arī jauni veidi un intervāli no core::range, ieskaitot Range, RangeFrom, RangeToInclusive un to iterātorus.

  • Cargo: izmaiņas atkarÄ«bām un dokumentācijai.
    Tagad atkarÄ«ba var vienlaikus norādÄ«t Git repozitoriju un alternatÄ«vo reÄ£istru: lokāli tiks izmantota Git versija, un publicēŔanas laikā — versija no reÄ£istra, lÄ«dzÄ«gi kā uzvedÄ«ba ar crates.io. Tāpat pievienots atbalsts target.’cfg(..)’.rustdocflags Cargo konfigurācijā.

  • Rustdoc kļuva uzmanÄ«gāks, apstrādājot dokumentāciju.
    Informācija par deprecated API tagad tiek renderēta kā parasta dokumentācija, bez iepriekŔējās Ä«paŔās apstrādes caur white-space: pre-wrap. Turklāt rustdoc vairs neizsniedz lint missing_doc_code_examples elementiem iekÅ” impl, un dokumentācijas sānu panelÄ« metodes un asociētās funkcijas tiek atseviŔķi sadalÄ«tas.

  • Iespējamas nesaderÄ«bas.
    Izlaidumā ir vairāki uzlabojumi, kas var parādÄ«ties neparodā kodā: ir labota dažu #[repr(Int)] enum izkārtojums ekstremālos gadÄ«jumos, aizliegtas dažas nevajadzÄ«gas unsize pārvērÅ”anās Pin, WebAssembly izstrādes tagad avarē neatzÄ«tiem simboliem, nejauÅ”i stabilizētais atribÅ«ts #![reexport_test_harness_main] atkal ir slēgts ar feature gate, ir noņemts parametrs -Csoft-float, un minimālā versija ārējā LLVM ir paaugstināta lÄ«dz 21. AVR ir mainÄ«ts c_double tips uz f32, jo Å”iem mērÄ·iem C double pēc noklusējuma ir 32 bitu.

Avots: linux.org.ru

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster