Rust 1.76 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.76 á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 dokumentációhoz külön rész került, amely leírja a különböző argumentumtípusok és függvényvisszaadási típusok kompatibilitását ABI szinten. A korábbi verziókhoz képest a kompatibilitás ABI szinten garantált a "char" és "u32" típusoknál, amelyek mérete és elrendezése azonos.
  • A korábban elérhető "any::type_name::" hívás mellett ()”, amely a „T” paraméterben megadott típushoz egy karakterláncleírást ad vissza, hozzáadásra került a „type_name_of_val(&T)” függvény, amely lehetővé teszi, hogy bármilyen névtelen hivatkozás alapján típusinformációt kapjon. fn get_iter() -> impl Iterátor { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); legyen iter_name = std::any::type_name_of_val(&iter); legyen összeg: i3 = iter.sum(); println!("A `{iter_name}` összege {sum}."); } A kimenet: a `core::array::iter::IntoIter összege ` az 32.
  • 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:
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Eredmény::ellenőrzés
    • Eredmény::inspect_err
    • Opció::vizsgálat
    • type_name_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • A harmadik támogatási szint a {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios és arm64e-apple-darwin 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.

Emellett megjegyezzük a Rust nyelven írt és felhasználói térben végrehajtott scx_rustland kísérleti feladatütemező demonstrációját (a feladatütemezési logika átvitele a kernelből a felhasználói térbe a sched-ext eszközkészlettel valósul meg BPF használatával). Az ütemező úgy van optimalizálva, hogy növelje az interaktív feladatok prioritását a CPU-igényes feladatokkal szemben. Például egy játékalkalmazást a kernel felépítésével egyidejűleg elindított teszt során az scx_rustland ütemező lehetővé tette számunkra, hogy magasabb FPS-t érjünk el a játékban, mint a szabványos EEVDF ütemező használatakor.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster