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Ă«.
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
