Rust 1.96.0

LĂ«shimi i njĂ« versioni tĂ« ri Rust 1.96.0 — njĂ« version stabil tĂ« gjuhĂ«s sĂ« programimit Rust. Risdizajni doli mĂ« 28 maj 2026; mund ta instaloni me komandĂ«n standarde rustup update stable. Ndryshimet kryesore pĂ«rfshijnĂ« llojet e reja tĂ« intervaleve nĂ« core::range, stabilizimin e makros pĂ«r kontrollin e pĂ«rputhshmĂ«risĂ« me modelet, rreptĂ«simin e sjelljes sĂ« ndĂ«rtimeve WebAssembly dhe rregullimin e dy vulnerabilitetĂ«ve nĂ« Cargo.

Ndryshimet kryesore

  • Llojet e reja tĂ« intervaleve core::range::Range*.
    Në bibliotekën standarde janë stabilizuar variante të reja të intervaleve: core::range::Range, RangeFrom, RangeInclusive dhe iteratorët përkatës. Ndryshe nga llojet e vjetra të core::ops, intervalet e reja nuk realizojnë direkt Iterator, por transformohen në një iterator përmes IntoIterator. Për këtë arsye, këto intervale mund të jenë Copy, gjë që është e dobishme, për shembull, kur ruani një interval si një fushë strukture. Sintaksa si 0..1 ende krijon llojet e vjetra të intervaleve, por në redaksinë në vijim të gjuhës është planifikuar të kalojë në tipet e reja.

  • Shtuar assert_matches! dhe debug_assert_matches!.
    Makros të reja lejojnë të kontrolloni se vlera përputhet me një model të caktuar. Nënkuptimi është i ngjashëm me assert!(matches!(
)), por në rast gabimi shfaqet përfaqësimi Debug i vlerës, gjë që lehtëson diagnozën. Në prelude makros nuk janë shtuar, për të shmangur konfliktet me crate populare të palëve të treta, prandaj duhet t'i importoni në mënyrë të qartë nga core ose std.

  • Ndryshuar sjelljen e qĂ«llimeve WebAssembly.
    Rust nuk e dĂ«rgon mĂ« linker-it —allow-undefined pĂ«r ndĂ«rtimet WebAssembly. Tani simbolet e paqartĂ« gjatĂ« linkimit konsiderohen njĂ« gabim, jo automatikisht importohen nga moduli "env". Kjo duhet ta zbulojĂ« mĂ« herĂ«t gabimet e ndĂ«rtimit dhe emrat e gabuar tĂ« simboleve. Sjellja e vjetĂ«r mund tĂ« rikthehet nĂ«se nevojitet pĂ«rmes RUSTFLAGS=-Clink-arg=—allow-undefined ose duke shprehur qartĂ« modulon wasm qĂ« importohet pĂ«rmes #[link(wasm_import_module = "env")].

  • Cargo mori rregullime sigurie.
    Në Rust 1.96.0 u mbyllën dy vulnerabilitete që ndikuan përdoruesit e registrive të palëve të treta. CVE-2026-5223 është e lidhur me trajtimin e symlink brenda arkivave tar të crate: një paketë e dëmshme nga një regsitër i palës së tretë mund të përmbysë keqin e një pakete tjetër nga i njëjti regjistër. Duke filluar nga Rust 1.96.0, Cargo refuzon arkivat e crate me symlink. CVE-2026-5222 është e lidhur me normalizimin e URL sparse registry dhe nën rrethana të rralla mund të sjellë dërgimin e tokenit Cargo në një regjistër të dëmshëm. Përdoruesit e crates.io, sipas ekipit të Rust, nuk janë prekur nga këto probleme.

  • NjĂ« ndryshim nĂ« gjuhĂ«.
    NĂ« version u pĂ«rfshirĂ« disa korrigjime dhe zgjerime tĂ« punktura: u lejohet transferimi i variablave expr tĂ« makrosĂ« nĂ« cfg, korrigjimi i konvertimit tĂ« never-type nĂ« shprehjet-tuples, u korrigjua rastet e rralla tĂ« sugjerimeve tĂ« gabuara tĂ« tipeve pĂ«r argumentet e funksioneve, shtoi mbĂ«shtetje pĂ«r regjistrat vektorĂ« s390x nĂ« assembly inline, si dhe u lejua pĂ«rsĂ«ri pĂ«rdorimi i konstantave tĂ« llojit ManuallyDrop si template — kjo korrigjon regresionin e shfaqur nĂ« Rust 1.94.0.

  • Ndryshimet nĂ« kompilues dhe platforma.
    PĂ«r objektivat Linux nĂ« LoongArch u aktivizua mbĂ«shtetje pĂ«r link relaxation — njĂ« optimizim lidhjeje qĂ« lejon thjeshtimin e disa kalimeve dhe thirrjeve pas vendosjes sĂ« kodit. PĂ«r riscv64gc-unknown-fuchsia, konfigurimi bazĂ« u pĂ«rditĂ«sua nĂ« profilin RVA22 me mbĂ«shtetje pĂ«r zgjerimet vector.

  • PĂ«rditĂ«simet e bibliotekĂ«s standarde.
    U shtua mbështetje për iterimin në ranges të numrave NonZero-të të plotë. Gjithashtu, u korrigjua trajtimi i vonuar i adresave të hostit në SGX përmes ToSocketAddr, dhe në dokumentacionin dhe kontratat e brendshme u sqarua definicioni i memories, 'të lejuar për lexim/shkrim': pointeri zero përjashtohet nga definicioni i përgjithshëm, dhe përjashtimet specifikohen veçmas për metoda të caktuara.

  • API tĂ« stabilizuara.
    Mes API-eve të stabilizuar janë assert_matches!, debug_assert_matches!, implementimet From<T> për AssertUnwindSafe<T>, LazyCell<T, F> dhe LazyLock<T, F>, si dhe tipe të reja dhe iteratorë ranges nga core::range, duke përfshirë Range, RangeFrom, RangeToInclusive dhe iteratorët e tyre.

  • Cargo: ndryshime pĂ«r varĂ«sitĂ« dhe dokumentacionin.
    Tani njĂ« varĂ«si mund tĂ« tregojĂ« njĂ« depo Git dhe njĂ« registri alternativ nĂ« tĂ« njĂ«jtĂ«n kohĂ«: versioni Git do tĂ« pĂ«rdoret lokal, dhe gjatĂ« publikimit — versioni nga registri, nĂ« pĂ«rputhje me sjelljen me crates.io. Gjithashtu, u shtua mbĂ«shtetje pĂ«r target.’cfg(..)’.rustdocflags nĂ« konfigurimin e Cargo.

  • Rustdoc tani e trajton dokumentacionin mĂ« tĂ« kujdesshĂ«m.
    Shënimet për API të braktisura tani renderohen si dokumentacion i zakonshëm, pa përpunimin e mëparshëm të veçantë përmes white-space: pre-wrap. Për më tepër, rustdoc nuk jep më lint missing_doc_code_examples për elementet brenda impl, dhe në panelet anësore të dokumentacionit, metodat dhe funksionet e asociuara ndahen veçmas.

  • MundĂ«sitĂ« e paqartĂ«sive.
    Në këtë version ka disa ndryshime që mund të shfaqen në kodin jo tipik: është korrigjuar renditja e disa #[repr(Int)] enum në raste ekstreme, janë të ndaluara disa transformime të padobishme unsize në Pin, ndërtimet WebAssembly tani bien kur ka simbole të paqartë, atributi i stabilizuar rastësisht #![reexport_test_harness_main] është sërish nën një portë funksionale, është eliminuar parametri -Csoft-float, dhe versioni minimal i LLVM të jashtëm është rritur në 21. Për AVR, tipi c_double është ndryshuar në f32, pasi në këto qëllime C double në mënyrë të paracaktuar është 32-bit.

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster