Rust 1.62 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.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

Hozzászólás