Rust 1.77 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar globojamos nepriklausomos ne pelno organizacijos „Rust Foundation“ bendrosios paskirties programavimo kalbos „Rust 1.77“ leidimas. Kalba daugiausia dėmesio skiria atminties saugai ir suteikia galimybę pasiekti aukštą darbo lygiagretumą, vengiant šiukšlių rinktuvo ir vykdymo laiko (vykdymo laikas sumažinamas iki pagrindinės standartinės bibliotekos inicijavimo ir priežiūros).

„Rust“ atminties apdorojimo metodai apsaugo kūrėją nuo klaidų manipuliuojant rodyklėmis ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties tvarkymo, pvz., prieiga prie atminties srities ją atlaisvinus, nulinių rodyklių panaikinimas, buferio viršijimas ir kt. Siekiant platinti bibliotekas, teikti kūrimo ir valdyti priklausomybes, projektas sukuria krovinių paketų tvarkyklę. Crates.io saugykla palaikoma bibliotekų prieglobai.

Atminties sauga „Rust“ užtikrinama kompiliavimo metu, tikrinant nuorodas, stebint objekto nuosavybę, stebint objektų gyvavimo trukmę (apimtį) ir įvertinant prieigos prie atminties teisingumą vykdant kodą. Rust taip pat suteikia apsaugą nuo sveikųjų skaičių perpildymo, reikalauja, kad kintamieji būtų inicijuojami prieš naudojant, geriau tvarko klaidas standartinėje bibliotekoje, pagal numatytuosius nustatymus taiko nekintamų nuorodų ir kintamųjų koncepciją ir siūlo tvirtą statinį rašymą, kad būtų sumažintos loginės klaidos.

Pagrindinės naujovės:

  • Pridėtas palaikymas C eilučių (c"tekstas"), kurios atmintyje saugomos su nuliniu simboliu ir yra susietos su tipu "CStr", palaikymas. Tikimasi, kad C eilutės palaikymas supaprastins kodo, sąveikaujančio su sluoksniais programavimo kalbomis, kurios naudoja nulinio galo eilutes, rašymą ir leis atlikti reikiamus patikrinimus kompiliavimo etape. const HELLO: &core::ffi::CStr = c"Sveikas, pasauli!";
  • Asinchroniškai vykdomose funkcijose, deklaruojamose naudojant posakį „async fn“, leidžiama naudoti rekursiją, t.y. dabar tokios funkcijos gali pasivadinti. async fn fib(n: u32) -> u32 { match n { 0 | 1 => 1, _ => Box::pin(fib(n-1)).laukti + Box::pin(fib(n-2)).laukti } }
  • Offset_of! Praktiškai makrokomanda gali būti naudinga tais atvejais, kai reikia dirbti lauko poslinkio lygiu, kai nėra tokio tipo egzemplioriaus. Visų pirma, offset_of funkcija reikalinga kuriant žemo lygio komponentus, pvz., tvarkykles. naudoti std::mem; #[repr(C)] struct FieldStruct { pirmas: u8, antras: u16, trečias: u8 } assert_eq!(mem::offset_of!(FieldStruct, pirmas), 0); assert_eq!(mem::offset_of!(FieldStruct, second), 2); assert_eq!(mem::offset_of!(FieldStruct, third), 4);
  • Cargo paketų tvarkyklėje leidimų profiliuose failų valymas nuo derinimo duomenų yra įjungtas pagal nutylėjimą (juostelė = “debuginfo”), nebent Cargo profilyje yra aiškiai įjungtas derinimo režimas, t.y. jei parametro derinimas = 0.
  • Parinktis „-Zthir-unsafeck=on“ yra įjungta pagal numatytuosius nustatymus, nes tai užtikrina nesaugų THIR (Typed High-Level Intermediate Representation) patikrinimą.
  • Pridėtas static_mut_refs pūkelių patikrinimas, kad būtų rodomas įspėjimas, kai naudojamos nuorodos į kintamas statines reikšmes.
  • Įdiegta galimybė naudoti tipą „Nuo<&[T;“. N]>“ tipui „Karvė<[T]>“. fn foo(duomenys: impl Into >) { /* … */ } fn main() { foo(&["labas", "pasaulis"]); }
  • Kompiliatorius pateikia 16 baitų i128 ir u128 tipų derinimą x86 sistemoms.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • masyvas::kiekvienas_ref
    • masyvas::each_mut
    • core::net
    • f32::round_ties_even
    • f64::round_ties_even
    • mem::offset_of!
    • gabalas::pirmas_gabalas
    • slice::first_chunk_mut
    • slice::split_first_chunk
    • slice::split_first_chunk_mut
    • gabalas::paskutinis_gabalas
    • slice::last_chunk_mut
    • slice::split_last_chunk
    • slice::split_last_chunk_mut
    • slice::chunk_by
    • slice::chunk_by_mut
    • Įrištas::žemėlapis
    • Failas::kurti_naują
    • Mutex::clear_poison
    • RwLock::clear_poison
  • Trečiasis paramos lygis įdiegtas platformoms aarch64-unknown-illumos, hexagon-unknown-none-elf, riscv32imafc-esp-espidf ir riscv32im-risc0-zkvm-elf. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster