Rust 1.67 programozási nyelv kiadás

Megjelent a Mozilla projekt által alapított, de immár a Rust Foundation független non-profit szervezet égisze alatt kifejlesztett Rust 1.67 általános célú programozási nyelv. A nyelv a memória biztonságára összpontosít, és biztosítja az eszközöket a munka magas párhuzamosságának eléréséhez, miközben elkerüli a szemétgyűjtő és a futási időt (a futásidő a szabványos könyvtár alapvető inicializálására és karbantartására csökken).

A Rust memóriakezelési módszerei megóvják a fejlesztőt a mutatók manipulálása során előforduló hibáktól, és megóvják az alacsony szintű memóriakezelésből adódó problémáktól, mint például a memóriaterület elérése annak felszabadítása után, a nulla mutatók hivatkozásának megszüntetése, a puffertúllépések stb. A programkönyvtárak terjesztéséhez, a buildek biztosításához és a függőségek kezeléséhez a projekt fejleszti a Cargo csomagkezelőt. A crates.io tároló támogatja a könyvtárak tárolását.

A memóriabiztonságot a Rust a fordítási időben biztosítja a referenciaellenőrzés, az objektumok tulajdonjogának nyomon követése, az objektumok élettartamának (hatóköreinek) nyomon követésével és a memória-hozzáférés helyességének értékelésével a kód végrehajtása során. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.

Főbb újítások:

  • A Future::Output funkcióval rendelkező aszinkron függvényeknél mostantól lehetőség van "#[must_use]" megjegyzések megadására, amelyek figyelmeztetést tartalmaznak a visszatérési érték figyelmen kívül hagyása esetén, ami segít azonosítani azokat a hibákat, amelyeket az a feltételezés okoz, hogy a függvény megváltoztatja az értékeket. nem pedig új értéket ad vissza. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().várakozik; } figyelmeztetés: a `bar` által visszaadott jövő nem használt kimenete, amelyet használni kell —> src/lib.rs:5:5 | 5 | bar().várni; | ^^^^^^^^^^^ | = Megjegyzés: `#[warn(unused_must_use)]` alapértelmezés szerint be van kapcsolva
  • Frissítésre került a FIFO queues std::sync::mpsc (multi-producer single-consumer) implementációja, amely áttért a crossbeam-channel modul használatára a korábbi API megtartása mellett. Az új megvalósítást számos probléma megoldása, nagyobb teljesítmény és egyszerűsített kódkarbantartás jellemzi.
  • Az API új része átkerült a stabil kategóriába, beleértve a tulajdonságok módszereit és megvalósításait is:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • A "const" attribútum, amely meghatározza, hogy konstansok helyett bármilyen környezetben használható, a függvényekben használatos:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • mag::char::from_digit
  • A harmadik támogatási szint bevezetésre került a Rust használatához a Linux kernelben (linuxkernel), valamint a Sony PlayStation 1 (mipsel-sony-psx), PowerPC AIX-szel (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformok qnx710, x86_64-pc-nto-qnx710). A harmadik szint alaptámogatást foglal magában, de automatikus tesztelés, hivatalos buildek közzététele vagy annak ellenőrzése nélkül, hogy a kód összeállítható-e.

Emellett megjegyezhetjük, hogy az ARM olyan javításokat tett közzé, amelyek lehetővé teszik a Rust nyelv használatát az AArch64 architektúrán alapuló rendszerekhez összeállított illesztőprogramok és Linux kernelmodulok fejlesztésére.

Forrás: opennet.ru

Hozzászólás