A Rust 1.96 új, másolásbarát tartománytípusokat vezet be

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Rust 1.96 mostújabb stabil kiadása most elérhető, amely új tartománytípusokat, stabilizált állítási makrókat, a WebAssembly linker viselkedésének változását, valamint két Cargo sebezhetőség javítását hozza, amelyek harmadik fél tárolóit érintik.

Az egyik legfontosabb változás a frissítésben az új

core::range::Range*

típusok stabilizálása. Eddig a Rust tartománytípusai a

core::ops

részből közvetlenül az

Iterator

interfészt valósították meg, ami megakadályozta, hogy

Copy

típusúak legyenek. Ez kényelmetlen volt a fejlesztők számára, amikor tartományértékeket akartak tárolni könnyű másolható típusokban.

A Rust 1.96 ezt a problémát úgy oldja meg, hogy új helyettesítő tartománytípusokat stabilizál a

core::range

alatt, beleértve a

Range

,

RangeFrom

és

RangeInclusive

típusokat a hozzájuk tartozó iterátorokkal. Ezek a típusok az

IntoIterator

interfészt valósítják meg az

Iterator

helyett, lehetővé téve számukra, hogy

Copy

típusúak legyenek.

Jelenleg a

0..1

tartomány szintaxis továbbra is a régi tartománytípusokat hozza létre. A Rust csapata azt mondja, hogy ez a szintaxis a jövőbeli kiadásokban átkerül az új

core::range

típusokhoz. A könyvtár szerzőit arra figyelmeztetik, hogy a nyilvános API-kban használják az

impl RangeBounds

megvalósítást, hogy támogassák mind a régi, mind az új tartománytípusokat.

A kiadás stabilizálja az

assert_matches!

és

debug_assert_matches!

makrókat is. Ezek ellenőrzik, hogy egy érték megfelel-e egy mintának, és a hiba esetén kiírják az érték

debug

reprezentációját. Hasznosabb diagnosztikát nyújtanak, mint egy sima

assert!(matches!(...))

ellenőrzés.

Az új makrók nem találhatók a Rust alapértelmezett előkészítőjében, mert ez ütközne a harmadik fél csomagjaival, amelyek ugyanazokat a neveket használják. A fejlesztőknek manuálisan kell importálniuk őket a

core

vagy

std

részből.

A Rust 1.96 a WebAssembly célok linkelésének módját is megváltoztatja. A fordító alapértelmezés szerint már nem adja át a

--allow-undefined

opciót a linkernek, így a meghatározatlan szimbólumokat linkerhibaként kezelik, ahelyett, hogy WebAssembly importokká alakítanák őket az

"env"

modulból.

A Rust csapata azt mondja, hogy a változás célja a build-időbeli hibák és konfigurációs problémák korábbi észlelése, különösen a hiányzó szimbólumok vagy névadási problémák esetén. Azok a projektek, amelyek a korábbi viselkedésre támaszkodnak, visszaállíthatják azt a

RustFLAGS=-Clink-arg=--allow-undefined

beállítással, vagy a forráskódban a

#[link(wasm_import_module = "env")]

használatával.

Eszközoldalon a Rust 1.96 két sebezhetőség javítását tartalmazza, amelyek a harmadik fél tárolóit használó felhasználókat érintik. CVE-2026-5223 egy közepes súlyosságú probléma, amely a symlinkekkel rendelkező crate tarballok kinyerésével kapcsolatos. CVE-2026-5222 egy alacsony súlyosságú probléma, amely a normalizált URL-ekkel kapcsolatos hitelesítéssel függ össze. A Rust csapata azt mondja, hogy a crates.io felhasználókat nem érinti ez a probléma.

A kiadásban stabilizált egyéb API-k közé tartozik a

From<T>

megvalósítás az

AssertUnwindSafe<T>

,

LazyCell<T, F>

és

LazyLock<T, F>

számára, valamint további

core::range

API-k, mint például a

RangeToInclusive

,

RangeToInclusiveIter

,

RangeFromIter

és

RangeIter

.

További részletekért lásd a bejelentést.

A meglévő Rust telepítéssel rendelkező felhasználók a

Rustup update stable

parancs futtatásával frissíthetnek az új verzióra.