Rust 1.67 programavimo kalbos leidimas

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

  • Asinchroninėms funkcijoms su „Future::Output“ dabar galima nurodyti „#[must_use]“ komentarus, kuriuose yra įspėjimas, jei grąžinamos reikšmės nepaisoma, o tai padeda nustatyti klaidas, atsiradusias dėl prielaidos, kad funkcija pakeis reikšmes o ne grąžinti naują vertę. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().laukti; } įspėjimas: nepanaudota ateities išvestis, kurią grąžino `bar`, kuri turi būti naudojama —> src/lib.rs:5:5 | 5 | bar().laukti; | ^^^^^^^^^^^ | = pastaba: „#[warn(unused_must_use)]“ įjungta pagal numatytuosius nustatymus
  • Atnaujintas FIFO eilių std::sync::mpsc (kelių gamintojų vieno vartotojo) diegimas, kuris buvo perjungtas į crossbeam-channel modulio naudojimą, išlaikant ankstesnę API. Naujasis diegimas išsiskiria daugybe problemų sprendimu, didesniu našumu ir supaprastinta kodo priežiūra.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atributas "const", kuris nustato galimybę jį naudoti bet kuriame kontekste vietoj konstantų, naudojamas funkcijose:
    • char::from_u32
    • char::from_skaitmens
    • char::to_skaitmens
    • core::char::from_u32
    • core::char::from_digit
  • Trečiasis palaikymo lygis buvo įdiegtas naudojant Rust Linux branduolyje (linuxkernel), taip pat Sony PlayStation 1 (mipsel-sony-psx), PowerPC su AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformose qnx710, x86_64-pc-nto-qnx710). Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.

Be to, galime pastebėti, kad ARM paskelbė pataisas, leidžiančias naudoti Rust kalbą kuriant tvarkykles ir Linux branduolio modulius, surinktus sistemoms, pagrįstoms AArch64 architektūra.

Šaltinis: opennet.ru

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