Megjelent a Mozilla projekt által alapított, de immár a Rust Foundation független non-profit szervezet égisze alatt kifejlesztett Rust 1.62 á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 „cargo” csomagkezelő felajánlja az „add” parancsot, amely lehetővé teszi új függőségek hozzáadását a Cargo.toml jegyzékhez, vagy a meglévő függőségek módosítását a parancssorból. A parancs lehetővé teszi egyedi jellemzők és verziók megadását is, például: cargo add serde —a jellemzők származtatják a rakományt add nom@5
- Hozzáadtuk a „#[derive(Default)]” használatát olyan enumokkal, amelyekben az alapértelmezett beállítás a „#[alapértelmezett]” attribútummal van meghatározva. #[derive(Default)] enum Talán { #[alapértelmezett] Semmi, valami (T), }
- Linux platformon a Mutex szinkronizálási mechanizmus kompaktabb és gyorsabb megvalósítása a Linux kernel által biztosított futexek használatán alapul. A korábban használt pthreads könyvtárra épülő implementációtól eltérően az új verzió 5 helyett csak 40 bájtot használ a Mutex állapot tárolására, ehhez hasonlóan a Condvar és az RwLock zármechanizmusok is átkerültek a futexbe.
- Az x86_64-unknown-none célplatform támogatásának második szintje is megvalósult, amelyet olyan futtatható fájlok létrehozására terveztek, amelyek operációs rendszer nélkül is működhetnek. Például a megadott célplatform használható kernelkomponensek írásakor. A támogatás második szintje összeszerelési garanciával jár.
- A harmadik támogatási szint az aarch64-pc-windows-gnullvm és az x86_64-pc-windows-gnullvm platformokon valósult meg. 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.
- 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:
- bool::then_some
- f32::total_cmp
- f64::total_cmp
- Stdin::lines
- windows::CommandExt::raw_arg
- impl Az AssertUnwindSafe alapértelmezett értéke
- Tól től > Rc
- Tól től > Arc<[u8]> számára
- FusedIterator for EncodeWide
Forrás: opennet.ru