Rust 1.68 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar globojamos nepriklausomos ne pelno organizacijos „Rust Foundation“ bendrosios paskirties programavimo kalbos „Rust 1.68“ 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“ paketų tvarkyklė ir „crates.io“ saugykla stabilizavo „Sparse“ protokolo palaikymą, kuris apibrėžia naują darbo su indeksu būdą, atspindintį visų saugykloje esančių paketų turimas versijas. Naujasis protokolas leidžia žymiai padidinti darbo su crates.io greitį ir išspręsti mastelio didinimo problemas, toliau augant saugykloje esančių paketų skaičiui.

    Siekdama sumažinti delsą, kurią sukelia viso indekso atsisiuntimas, „Sparse“, užuot pasiekusi indeksą naudodama „Git“, tiesioginiu būdu per HTTPS atsisiunčia tik būtinus indekso duomenis, apimančius konkretaus projekto priklausomybes. Indekso duomenims teikti naudojama nauja paslauga index.crates.io. Pagal numatytuosius nustatymus naują protokolą planuojama naudoti Rust 1.70 šakoje, o prieš tai, norint jį įjungti, galima nustatyti aplinkos kintamąjį „CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse“ arba į „[registries“ pridėti parametrą „protocol =“. crates-io]“ .cargo/config.toml failo skiltis „sparse“.

  • Pridėta „pin!“ makrokomanda, leidžianti sukurti Pin<&mut T> struktūrą iš išraiškos „T“ su vietiniu jos būsenos prisegimu (skirtingai nei Box::pin, ji neskiria atminties krūvoje, o susieja kamino lygyje).
  • Buvo pasiūlyta numatytoji atminties paskirstymo klaidų tvarkyklė, naudojama naudojant standartinį paskirstymo paketą. Programos, kurios įgalina tik alloc (be std), dabar iškvies „panic!“ tvarkyklę, kai nepavyks paskirstyti atminties, kurią pasirinktinai galima perimti naudojant „#[panic_handler]“. Programos, naudojančios std biblioteką, toliau spausdins klaidos informaciją į stderr ir strigs.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • {core,std}::pin::pin!
    • impl Nuo už {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut, skirtas PathBuf
  • „Const“ atributas, nurodantis galimybę jį naudoti bet kuriame kontekste vietoj konstantų, naudojamas VecDeque::new funkcijoje.
  • Norint dirbti Android platformoje, dabar reikalingas bent NDK r25 (API 19), t.y. Mažiausiai palaikoma „Android“ versija padidinta iki 4.4 („KitKat“).
  • Trečiasis palaikymo lygis įdiegtas Sony PlayStation Vita platformai (armv7-sony-vita-newlibeabihf). Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.

Šaltinis: opennet.ru

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