Rust 1.96.0

Publikuar lĂ«shimi Rust 1.96.0 — versioni tjetĂ«r stabil i gjuhĂ«s sĂ« programimit Rust. PĂ«rditĂ«simi doli 28 maj 2026; mund ta instaloni me komandĂ«n standarde rustup update stable. Ndryshimet kryesore pĂ«rfshijnĂ« lloje tĂ« reja tĂ« intervaleve nĂ« core::range, stabilizimin e makros pĂ«r kontrollin e ndeshjeve tĂ« shabllonĂ«ve, forcimin e sjelljes sĂ« ndĂ«rtimĂ«ve WebAssembly dhe rregullimet e dy vulnerabiliteteve nĂ« Cargo.

Ndryshimet kryesore

  • Llojet e reja tĂ« intervaleve core::range::Range*.
    Në bibliotekën standarde janë stabilizuar variante të reja intervalesh: core::range::Range, RangeFrom, RangeInclusive dhe iteratorët përkatës. Ndryshe nga llojet e vjetra nga core::ops, intervalet e reja nuk e realizojnë drejtpërdrejt Iterator, por konvertohen në një iterator përmes IntoIterator. Falë kësaj, këto intervale mund të jenë Copy, që është e përshtatshme, për shembull, kur ruani një interval si fushë të një strukture. Sintaksa si 0..1 ende krijon llojet e vjetra të intervaleve, por në redaksinë e ardhshme të gjuhës planifikojnë ta kalojnë në llojet e reja.

  • JanĂ« shtuar assert_matches! dhe debug_assert_matches!.
    Makros të reja lejojnë të kontrolloni se vlera përputhet me një model të caktuar. Në kuptim, kjo ngjan me assert!(matches!(
)), por në rast gabimi jepet një paraqitje Debug e vlerës, duke e bërë diagnostikimin më të lehtë. Në prelude, makros nuk u shtuan për të mos e komplikur me crate të njohura të palëve të treta, kështu që duhet t'i importoni qartë nga core ose std.

  • PĂ«rgjigjja e platformave WebAssembly Ă«shtĂ« ndryshuar.
    Rust tani nuk i dĂ«rgon linker-it —allow-undefined pĂ«r ndĂ«rtimet WebAssembly. Tani simbolet e paqarta gjatĂ« lidhjes konsiderohen si gabim dhe nuk kthehen automatikisht nĂ« importe nga moduli "env". Kjo duhet ta zbulojĂ« mĂ« herĂ«t ndonjĂ« gabim ndĂ«rtimi dhe emra tĂ« gabuar simbolet. Sjellja e vjetĂ«r mund tĂ« rikthehet nĂ«se Ă«shtĂ« e nevojshme pĂ«rmes RUSTFLAGS=-Clink-arg=—allow-undefined ose duke specifikuar qartĂ« modulin e importuar wasm pĂ«rmes #[link(wasm_import_module = "env")]

  • Cargo mori rregullime pĂ«r sigurinĂ«.
    Në Rust 1.96.0, janë adresuar dy vulnerabilitete që prekin përdoruesit e registry të palëve të treta. CVE-2026-5223 lidhur me menaxhimin e symlink brenda arkivave tar të crate: një paketë e dëmshme nga registry i palëve të treta mund të shkruajë mbi cache të një pakete tjetër nga e njëjta registry. Duke filluar nga Rust 1.96.0, Cargo refuzon arkivat e crate me symlink. CVE-2026-5222 ka lidhur me normalizimin e URL regjistrit sparse dhe në raste të rralla mund të kishte çuar në dërgimin e një Cargo-token në një regjistër keqdashës. Përdoruesit e crates.io, sipas ekipit Rust, nuk janë prekur nga këto probleme.

  • Ndryshime nĂ« gjuhĂ«.
    NĂ« lĂ«shim janĂ« pĂ«rfshirĂ« disa korrigjime dhe zgjerime tĂ« detajuara: Ă«shtĂ« lejuar kalimi i metaparametrave expr tĂ« makros nĂ« cfg, Ă«shtĂ« korrigjuar konvertimi i never-type nĂ« shprehjet-taksa, janĂ« rregulluar raste tĂ« rralla tĂ« njoftimeve tĂ« gabuara pĂ«r tipet e argumenteve tĂ« funksioneve, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r regjistrat vektor tĂ« s390x nĂ« montimin inline, si dhe Ă«shtĂ« lejuar pĂ«rsĂ«ri pĂ«rdorimi i konstantave tĂ« tipit ManuallyDrop si shabllone — kjo korrigon regresionin qĂ« u shfaq nĂ« Rust 1.94.0.

  • Ndryshime nĂ« kompilator dhe platforma.
    PĂ«r qĂ«llimet Linux nĂ« LoongArch Ă«shtĂ« aktivizuar mbĂ«shtetje pĂ«r relaksimin e lidhjeve — njĂ« optimizim lidhjeje qĂ« lejon thjeshtimin e disa kalimeve dhe thirrjeve pas vendosjes sĂ« kodit. PĂ«r riscv64gc-unknown-fuchsia Ă«shtĂ« pĂ«rditĂ«suar konfigurimi bazĂ« nĂ« profilin RVA22 me mbĂ«shtetje pĂ«r zgjerimet vektoriale.

  • PĂ«rditĂ«sime tĂ« bibliotekĂ«s standarde.
    Shtuar mbështetje për iterimin në intervale të numrave të plotë NonZero. Gjithashtu, është rregulluar përpunimi i vonuar i adresave të hostit në SGX përmes ToSocketAddr, ndërsa në dokumentacion dhe kontratat e brendshme është sqaruar përkufizimi i memories "të lejuar për lexim/shkrim": pika zero është përjashtuar nga përkufizimi i përgjithshëm, ndërsa përjashtimet përmenden veçmas për metoda të caktuara.

  • API tĂ« stabilizuara.
    Në mesin e interfaceve të stabilizuara janë assert_matches!, debug_assert_matches!, implementimet From për AssertUnwindSafe, LazyCell dhe LazyLock, si dhe lloje të reja dhe iteratorë të intervaleve nga core::range, duke përfshirë Range, RangeFrom, RangeToInclusive dhe iteratorët e tyre.

  • Cargo: ndryshime pĂ«r varĂ«si dhe dokumentacion.
    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 lokalisht dhe gjatĂ« publikimit do tĂ« pĂ«rdoret versioni nga registri, nĂ« pĂ«rputhje me sjelljen nĂ« crates.io. Gjithashtu, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r target.’cfg(..)’.rustdocflags nĂ« konfigurimin e Cargo.

  • Rustdoc tani e trajton mĂ« me kujdes dokumentacionin.
    Shënimet për API të vazhduara tani renderizohen si dokumentacion i zakonshëm, pa përpunimin e mëparshëm nëpërmjet 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ë panelin anësor të dokumentacionit metodat dhe funksionet e asociuara ndahet veçmas.

  • PĂ«rputhshmĂ«ritĂ« e mundshme.
    Në lëshimin e ri ka disa ndryshime që mund të shfaqen në kodin jo tipik: janë korrigjuar format e disa #[repr(Int)] enum në rastet ekstreme, janë ndaluar disa konvertime të panevojshme të unsize në Pin, ndërtimet e WebAssembly tani krijojnë gabime nëse simbolet janë të pacaktuara, atributi aksidental i stabilizuar #![reexport_test_harness_main] është mbyllur përsëri nën një portë funsionale, është hequr parametri -Csoft-float, dhe versione minimale e LLVM të jashtme është rritur në 21. Për AVR, tipi c_double është ndryshuar në f32, pasi në këto qëllime C double është automatikisht 32-bit.

Burimi: linux.org.ru

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