Rust 1.62 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar globojamos nepriklausomos ne pelno organizacijos „Rust Foundation“ bendrosios paskirties programavimo kalbos „Rust 1.62“ 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:

  • „Cargo“ paketo tvarkyklė siūlo komandą „add“, kuri leidžia pridėti naujų priklausomybių prie Cargo.toml manifesto arba pakeisti esamas priklausomybes iš komandinės eilutės. Komanda taip pat leidžia nurodyti individualias funkcijas ir versijas, pvz.: cargo add serde – funkcijos derive cargo add nom@5
  • Pridėta galimybė naudoti „#[derive(Default)]“ su sąrašais, kuriuose numatytoji parinktis apibrėžiama naudojant atributą „#[numatytasis]“. #[išvesti (numatytasis)] enum Galbūt { #[numatytasis] nieko, kažkas (T), }
  • Linux platformoje naudojamas kompaktiškesnis ir greitesnis Mutex sinchronizavimo mechanizmo įgyvendinimas, pagrįstas Linux branduolio teikiamų futexes naudojimu. Skirtingai nei anksčiau naudotas pthreads biblioteka pagrįstas diegimas, naujojoje versijoje Mutex būsenai saugoti naudojami tik 5 baitai, o ne 40. Panašiai Condvar ir RwLock blokavimo mechanizmai buvo perkelti į futex.
  • Įdiegtas antrasis x86_64-unknown-none tikslinės platformos palaikymo lygis, skirtas generuoti vykdomuosius failus, kurie gali veikti be operacinės sistemos. Pavyzdžiui, nurodytą tikslinę platformą galima naudoti rašant branduolio komponentus. Antrasis paramos lygis apima surinkimo garantiją.
  • Trečiasis paramos lygis įdiegtas platformoms aarch64-pc-windows-gnullvm ir x86_64-pc-windows-gnullvm. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl numatytoji AssertUnwindSafe vertė
    • Iš > Rc
    • Iš > Arc<[u8]>
    • FusedIterator, skirtas EncodeWide

    Šaltinis: opennet.ru

Добавить комментарий