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