Megjelent a Rust 1.79. Konzorcium alakult a Rust alapú, nagy megbízhatóságú rendszerek fejlesztésére.

Megjelent a Mozilla által indított, de manapság a független, nonprofit Rust Foundation által fejlesztett Rust 1.79 általános célú programozási nyelv. A nyelv a memória biztonságos kezelésére összpontosít, és eszközöket biztosít a feladatok magas párhuzamossággal való végrehajtásához, mindezt anélkül, hogy szemétgyűjtőt vagy futásidőt (runtime) használna (a futásidő a kezdeti beállításra és a standard könyvtár kezelésére korlátozódik).

A Rust memória kezelésének módszerei megszüntetik a fejlesztők hibáit a mutatókkal való manipulálás során, és védelmet nyújtanak az alacsony szintű memória kezelésből adódó problémákkal szemben, mint például a már felszabadított memória területére való hivatkozás, null-pointer dereferálás, pufferméret túllépés stb. A könyvtárak terjesztésére, a build biztosítására és a függőségek kezelésére a Cargo csomagkezelő fejlesztés alatt áll. A könyvtárak elhelyezésére a crates.io tároló támogatott.

A memória biztonságos kezelése a Rustban a fordítási időben történik, a hivatkozások ellenőrzésén, az objektumok tulajdonjogának nyomon követésén, az objektumok élettartamának (láthatóságának) figyelembevételén és a memória hozzáférésének helyességének értékelésén keresztül a kód futtatásakor. A Rust emellett eszközöket biztosít az egész számok túllépésének elleni védelemhez, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza a változatlan (immutable) hivatkozások és változók fogalmát alapértelmezés szerint, és erős statikus típussal minimalizálja a logikai hibákat.

Főbb újítások:

  • Bevezették az inline konstansok támogatását, amelyek a "const { … }" blokkok segítségével közvetlenül a kódban megadhatók, és lehetővé teszik a külön konstansok meghatározásának elkerülését. A "const { … }" blokkban megadott kód a fordítási szakaszban kerül kiszámításra és konstansként használják, anélkül, hogy a program futása alatt végrehajtanák. Ellentétben a konstansok "const ITEM: … = …" kifejezés általi meghatározásával, a "const { … }" blokkokban nem szükséges megadni a típust, mivel ott automatikus típuskiértékelést támogatnak. Például a külön konstans meghatározásával egyenként

    const EMPTY: Option<Vec> = None;
    let foo = [EMPTY; 100];

    helyettesíthető helyi használatra:

    let foo = [const { None }; 100];

  • Stabilizálták a „T: Trait” szintaxist az asszociált típusú korlátozások meghatározására, amely lehetővé teszi az összetett típuskorlátozások definíciójának egyszerűsítését, amelyek korábban belső impl Trait vagy több „where” feltétel meghatározását igényelték.
  • Biztosították a temporális értékek élettartamának automatikus meghosszabbítását, amelyeket a „match” és „if” konstrukciókban használnak.

    let a = if true {
    ..;
    &temp() // az élettartam meghosszabbodik
    } else {
    ..;
    &temp() // az élettartam meghosszabbodik
    };

  • Stabilizálták a main függvény más modulokból és crate csomagokból való importálásának lehetőségét.
  • A standard könyvtár összeállításakor a fordítón a „-Cforce-frame-pointers=yes” zászlót használják, amely adatokat ad hozzá a programok profilozásakor a verem rekonstrukciójához.
  • Új API-k kerültak a stabil kiadások közé, beleértve a metódusok és típusimplementációk stabilizálását:
    • {integer}::unchecked_add
    • {integer}::unchecked_mul
    • {integer}::unchecked_sub
    • ::split_at_unchecked
    • ::split_at_mut_unchecked
    • ::utf8_chunks
    • str::Utf8Chunks
    • str::Utf8Chunk
    • ::is_aligned
    • ::is_aligned
    • NonNull::is_aligned
    • ::len
    • ::len
    • ::is_empty
    • ::is_empty
    • NonNull::::is_empty
    • CStr::count_bytes
    • io::Error::downcast
    • num::NonZero
    • path::absolute
    • proc_macro::Literal::byte_character
    • proc_macro::Literal::c_string
  • A 'const' qualifier that defines the ability to use it in any context instead of constants is applied in functions:
    • Atomic*::into_inner
    • io::Cursor::new
    • io::Cursor::get_ref
    • io::Cursor::position
    • io::empty
    • io::repeat
    • io::sink
    • panic::Location::caller
    • panic::Location::file
    • panic::Location::line
    • panic::Location::column
  • Stabilizálva
    azok a funkciók, amelyeket a Webassembly (WASM) köztes reprezentációba történő fordítás során lehet használni.
  • Bevezetésre került a harmadik támogatási szint az aarch64-apple-visionos, aarch64-apple-visionos-sim és riscv32ima-unknown-none-elf platformokra. A harmadik szint alapvető támogatást jelent, de automatizált tesztelés, hivatalos kiadások publikálása és a kód összeszerelési képességének ellenőrzése nélkül.
  • Bevezetésre került a második támogatási szint az aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm és x86_64-pc-windows-gnullvm célplatformok számára. A második támogatási szint az összeszerelés garanciáját jelenti.

Emellett a Rust Foundation, amely a Rust nyelv körüli ökoszisztémát felügyeli, bejelentette a "Safety-Critical Rust Consortium" létrehozását, amely a Rust nyelv használatára összpontosít olyan megoldásokban, amelyek magas megbízhatóságot igényelnek (Safety-Critical Software), és ahol a hiba életveszélyhez, környezeti károkhoz vagy súlyos berendezéskárokhoz vezethet. A konzorciumhoz csatlakozott az ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle és a Woven by Toyota. A konzorcium által megoldandó feladatok között szerepel útmutatók írása és könyvtárak, linterek és statikus elemzők fejlesztése, valamint a megbízhatóság formális ellenőrzési módszereinek alkalmazása és a nyelv alnyelvének fejlesztése a nagy megbízhatóságú rendszerekhez.

A nagy megbízhatóságú rendszerekkel kapcsolatos projektek közül kiemelkedik a Verus — a Rust nyelven írt kód helyességének ellenőrzésére szolgáló eszközkészlet. Az ellenőrzés a kód elfogadható viselkedését leíró specifikáció meghatározásával történik. A Verus az végrehajtható kód futása során a specifikációnak való megfelelést ellenőrzi a működés helyességének megerősítése érdekében.

Forrás: opennet.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