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.

