Rozsda 1.96.0

A kiadvány megjelent Rozsda 1.96.0 — a Rust programozási nyelv legújabb stabil verziója. A frissítés megjelent. 28 May 2026 év; telepíthető a standard rustup update stable paranccsal. A főbb változások közé tartoznak az új tartománytípusok a core::range-ben, a mintaillesztési makrók stabilizálása, a WebAssembly build viselkedésének szigorítása, valamint két Cargo sebezhetőség javítása.

Nagy változások

  • Új tartománytípusok: core::range::Range*.
    Az új tartománytípusokat stabilizálták a standard könyvtárban: core::range::Range, RangeFrom, RangeInclusive, és a hozzájuk tartozó iterátorok. A core::ops régi típusaival ellentétben az új tartományok nem implementálják közvetlenül az Iterátort, hanem az IntoIterator segítségével konvertálódnak iterátorrá. Ez lehetővé teszi, hogy ezek a tartományok másolhatók legyenek, ami például akkor kényelmes, ha egy tartományt struktúra mezőként tárolunk. A 0..1 szintaxishoz hasonló szintaxis jelenleg a régi tartománytípusokat hozza létre, de a tervek szerint a nyelv egy jövőbeli verziójában migrálják az új típusokra.

  • Hozzáadva az assert_matches! és a debug_assert_matches!.
    Az új makrók lehetővé teszik annak ellenőrzését, hogy egy érték megfelel-e egy adott mintának. Ez elvileg hasonló az assert!(matches!(…)) utasításhoz, de hiba esetén az érték hibakeresési reprezentációja kerül kinyomtatásra, ami leegyszerűsíti a diagnosztikát. Ezeket a makrókat nem adtuk hozzá a Prelude-hoz, hogy elkerüljük az ütközéseket a népszerű, harmadik féltől származó ládákkal, ezért explicit módon importálni kell őket a magból vagy a standard verzióból.

  • Megváltoztatta a WebAssembly célok viselkedését.
    A Rust már nem adja át a --allow-undefined kapcsolót a linkernek a WebAssembly buildeknél. A nem definiált szimbólumokat mostantól hibaként kezeli a linkelés során, ahelyett, hogy automatikusan importáltá konvertálná őket az "env" modulból. Ennek korábban kellene észlelnie a build hibákat és az érvénytelen szimbólumneveket. A régi viselkedés szükség esetén visszaállítható a RUSTFLAGS=-Clink-arg=--allow-undefined használatával, vagy az importált wasm modul explicit megadásával a #[link(wasm_import_module = "env")] használatával.

  • A Cargo biztonsági javításokat kapott.
    A Rust 1.96.0 két olyan sebezhetőséget javít, amelyek harmadik féltől származó rendszerleíró adatbázisok felhasználóit érintik. CVE-2026 5223- A crate tarballokon belüli szimbolikus linkek kezelésével kapcsolatban: egy harmadik féltől származó rendszerleíró adatbázisból származó rosszindulatú csomag felülírhatja egy másik, ugyanabból a rendszerleíró adatbázisból származó csomag gyorsítótárát. A Rust 1.96.0 verziótól kezdődően a Cargo elutasítja a szimbolikus linkeket tartalmazó crate archívumokat. CVE-2026 5222- Ez a probléma a ritka beállításjegyzékben található URL-normalizálással kapcsolatos, és ritka esetekben egy Cargo token rosszindulatú beállításjegyzékbe küldéséhez vezethet. A Rust csapata szerint a crates.io felhasználókat nem érintik ezek a problémák.

  • Változások a nyelvben.
    A kiadás a következőket tartalmazza: Számos kisebb javítás és fejlesztés: Lehetővé vált a makrók expr metaváltozóinak átadása a cfg-nek, korrigáltuk a soha nem típusátalakítást a tuple kifejezésekben, kijavítottuk a függvényargumentumok helytelen típuskövetkeztetési tippjeinek ritka eseteit, hozzáadtuk az s390x vektorregiszterek támogatását az inline assemblyben, és újra engedélyeztük a ManuallyDrop konstansok sablonként való használatát – ez kijavít egy, a Rust 1.94.0-ban bevezetett regressziót.

  • Változások a fordítóban és a platformokban.
    mert LinuxA LoongArch célokhoz engedélyezve lett a link relaxációs támogatása – ez egy linkoptimalizálás, amely leegyszerűsít bizonyos átmeneteket és hívásokat a kód telepítése után. A riscv64gc-unknown-fuchsia esetében az alapkonfiguráció frissült az RVA22 profilra, amely támogatja a vektorbővítményeket.

  • Standard könyvtári frissítések.
    Hozzáadtuk a nem nulla egész tartományokon átívelő iteráció támogatását. Kijavítottuk a ToSocketAddr-on keresztüli host címek lusta kezelését SGX-ben, és pontosítottuk az „olvasható/írható” memória definícióját a dokumentációban és a belső szerződésekben: a null mutatót eltávolítottuk az általános definícióból, és a kivételek mostantól külön vannak megadva az egyes metódusokhoz.

  • Stabilizált API-k.
    A stabilizált interfészek között megtalálhatók az assert_matches!, a debug_assert_matches!, valamint a From implementációi. az AssertUnwindSafe számára , LazyCell és LazyLock , valamint az új tartománytípusokat és iterátorokat a core::range tömbből, beleértve a Range, RangeFrom, RangeToInclusive típusokat és azok iterátorait.

  • Cargo: Változások a függőségekben és a dokumentációban.
    Egy függőség mostantól megadhat egy Git repositoryt és egy alternatív beállításjegyzéket is: a Git verziója lesz használva helyben, a beállításjegyzék verziója pedig a közzététel során, hasonlóan a crates.io viselkedéséhez. A target.'cfg(..)'.rustdocflags támogatása is hozzáadásra került a Cargo konfigurációban.

  • A Rustdoc mostantól pontosabban kezeli a dokumentációt.
    Az elavult API-megjegyzések mostantól normál dokumentációként jelennek meg, a korábbi speciális white-space: pre-wrap feldolgozás nélkül. Ezenkívül a rustdoc már nem sömöríti a missing_doc_code_examples értéket az impl-en belüli elemekhez, a metódusok és a kapcsolódó függvények pedig mostantól elkülönítve jelennek meg a dokumentációs oldalsávon.

  • Lehetséges összeférhetetlenségek.
    A kiadás számos olyan változást tartalmaz, amelyek nem szabványos kódban is megjelenhetnek: néhány #[repr(Int)] enum elrendezését szélsőséges esetekben kijavították, és néhány haszontalan méretezési konverziót letiltottak a Pinben. A WebAssembly buildek mostantól összeomlanak nem definiált szimbólumoknál, a véletlenül stabilizált #![reexport_test_harness_main] attribútumot ismét funkciókorlátozás alá helyezték, a -Csoft-float opciót eltávolították, és a minimális külső LLVM verziót 21-re növelték. AVR esetén a c_double típust f32-re módosították, mivel a C double-ök alapértelmezés szerint 32 bitesek ezeken a célokon.

Forrás: linux.org.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster