Rust 1.96.0

Megjelent a kiadás Rust 1.96.0 — a legújabb stabil verziója a Rust programozási nyelvnek. A frissítés megjelent 2026. május 28-án; telepítése a standard rustup update stable parancs használatával lehetséges. A legfőbb változások új tartománytípusok bevezetése a core::range-ben, stabilizált makrók minták ellenőrzésére, a WebAssembly-kiadások viselkedésének szigorítása és két sérülékenység javítása a Cargo rendszerben.

Főbb változások

  • Új tartománytípusok a core::range::Range*-ban.
    A standard könyvtárban stabilizálták az új tartományváltozatokat: core::range::Range, RangeFrom, RangeInclusive és a hozzájuk kapcsolódó iterátorokat. A régi core::ops típusokkal ellentétben az új tartományok nem valósítják meg közvetlenül az Iterator-t, hanem IntoIterator-en keresztül alakulnak át iterátorrá. Ennek köszönhetően ezek a tartományok Copy típusúak lehetnek, ami kényelmes, például amikor egy tartományt struktúra mezőjeként tárolunk. Az olyan szintaxis, mint a 0..1, egyelőre a régi tartománytípusokat hozza létre, de a nyelv jövőbeli kiadásában tervezzük, hogy átállunk az új típusokra.

  • Hozzáadva az assert_matches! és debug_assert_matches!-t.
    Az új makrók lehetővé teszik, hogy ellenőrizzük, hogy az érték megfelel-e a megadott mintának. Ez lényegében hasonló az assert!(matches!(…))-hez, de hiba esetén az érték Debug-reprezentációját jeleníti meg, ami megkönnyíti a diagnózist. A prelude-ban nem adták hozzá a makrókat, hogy ne ütközzenek népszerű külső crate-ekkel, ezért ezeket kifejezetten importálni kell a core-ból vagy a std-ből.

  • Megváltozott a WebAssembly célok viselkedése.
    A Rust többé nem adja át a linkernek a —allow-undefined-ot a WebAssembly-kiadásokhoz. Most a definíció nélküli szimbólumok linkelése hibaüzenetet generál, és nem alakulnak át automatikusan az "env" modulból származó importokká. Ennek célja, hogy korábban felfedje a buildhibákat és a helytelen szimbólumneveket. A régi viselkedést szükség esetén vissza lehet állítani a RUSTFLAGS=-Clink-arg=—allow-undefined paranccsal, vagy kifejezetten megadhatjuk az importálandó wasm-modult a #[link(wasm_import_module = "env")] direktívával.

  • A Cargo biztonsági javításokat kapott.
    A Rust 1.96.0-ban két sérülékenységet javítottak, amelyek a külső registry-k felhasználóit érintették. CVE-2026-5223 kapcsolódik a symlink-ek kezeléséhez a crate tar archívumaiban: egy külső registry-ből származó rosszindulatú csomag felülírhatta egy másik csomag cache-ét ugyanabból a registry-ből. A Rust 1.96.0-tól a Cargo elutasítja a crate-archívumokat symlink-kel. CVE-2026-5222 kapcsolódik a sparse registry URL-ek normalizálásához, és ritka körülmények között a Cargo-tokenek küldéséhez rosszindulatú registry-be. A crates.io felhasználók, a Rust csapata szerint, nem érintettek ezen problémákban.

  • Változások a nyelvben.
    A kiadás része több apró javítás és bővítés: engedélyezve van az expr-metamátrixok átadása a cfg-nek, a never-típus kódolása javítva lett a tuple kifejezésekben, kijavítva néhány ritka esetben előforduló hibás típuskiadás javaslat a függvényargumentumoknál, hozzáadva a s390x vektoregiszterek támogatása inline assembly-hez, valamint ismét engedélyezve van a ManuallyDrop típusú konstansok sablonként való használata — ez javítja a Rust 1.94.0-ben bekövetkezett regressziót.

  • Változások a fordítóban és a platformokon.
    Linux célokra a LoongArch-on engedélyezve lett a link relaxation támogatása — a linkelés optimalizálása, amely lehetővé teszi a kód elhelyezése utáni néhány ugrás és hivatkozás egyszerűsítését. A riscv64gc-unknown-fuchsia esetében az alap konfiguráció frissítve lett a RVA22 profilra, amely támogatja a vektorbővítményeket.

  • A standard könyvtár frissítései.
    Hozzáadva a NonZero egész számok intervallumán való iteráció támogatása. Továbbá javítva lett a hoszt címek késleltetett feldolgozása SGX-en keresztül a ToSocketAddr segítségével, és a dokumentációban, valamint a belső szerződésekben pontosítva lett a 'olvasható/írható' memória meghatározása: a null pointer ki lett zárva az általános meghatározásból, és a kivételeket külön feltüntetik a konkrét metódusok számára.

  • Stabilizált API-k.
    A stabilizált interfészek között szerepel az assert_matches!, debug_assert_matches!, az AssertUnwindSafe<T> számára készült From<T> megvalósítások, LazyCell<T, F> és LazyLock<T, F>, valamint új típusok és intervallumok iterátorai a core::range-ből, beleértve a Range, RangeFrom, RangeToInclusive és azok iterátorait.

  • Cargo: változások a függőségek és a dokumentáció terén.
    Mostantól a függőség egyszerre utalhat Git-tárhelyre és alternatív registry-re: lokálisan a Git verziót használja, míg publikáláskor a registry-beli verziót, hasonlóan a crates.io viselkedéséhez. Hozzáadva a target.’cfg(..)’.rustdocflags támogatása a Cargo konfigurációban.

  • A rustdoc gondosabban kezeli a dokumentációt.
    A deprecated API-król szóló megjegyzések mostantól úgy jelennek meg, mint a normál dokumentáció, a korábbi fehér tér által végzett különleges feldolgozás nélkül. Ezenkívül a rustdoc már nem ad lint missing_doc_code_examples hibát az impl-en belüli elemek esetében, és a dokumentációs oldalsávban a metódusokat és az asszociált függvényeket külön-külön választják el.

  • Lehetséges inkompatibilitások.
    A kiadásban több változás van, amelyek nem szokványos kód esetén megjelenhetnek: javítva lett néhány #[repr(Int)] enum elrendezés szélsőséges esetekben, egyes haszontalan unsize átalakítások a Pin-ban tiltotta, a WebAssembly-gyűjtemények mostantól leállnak határozatlan szimbólumoknál, a véletlenszerűen stabilizált #![reexport_test_harness_main] attribútumot ismét letiltotta a feature gate, eltávolították a -Csoft-float paramétert, és a külső LLVM minimális verziója 21-re emelkedett. Az AVR-nél a c_double típust f32-re változtatták, mivel ezeknél a céloknál a C double alapértelmezés szerint 32 bites.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster