Rust 1.61 programavimo kalbos leidimas

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

  • Iš pagrindinės funkcijos galima nustatyti savo grąžinimo kodus. Iš pradžių pagrindinė „Rust“ funkcija galėjo grąžinti tik tipą „()“ (vienetas), kuris visada rodė sėkmingą išėjimo būseną, nebent kūrėjas aiškiai pavadino funkciją „process::exit(code)“. „Rust 1.26“ versijoje, naudojant nestabilų nutraukimo bruožą pagrindinėje funkcijoje, buvo galima grąžinti reikšmes „Ok“ ir „Err“, atitinkančias EXIT_SUCCESS ir EXIT_FAILURE kodus C programose. „Rust 1.61“ versijoje nutraukimo bruožas buvo stabilus ir buvo pasiūlytas atskiras „ExitCode“ tipas, vaizduojantis konkretų grąžinimo kodą, kuris abstrahuoja platformai būdingus grąžinimo tipus, pateikdamas iš anksto nustatytas konstantas SĖKMĖS ir NESUTEIKIMAS, ir metodą From grąžinti savavališką grąžinimo kodą . naudoti std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } Išėjimo kodas:: SĖKMĖS }
  • Stabilizuotos papildomos funkcijų, apibrėžtų naudojant posakį „const fn“, galimybės, kurias galima vadinti ne tik įprastomis funkcijomis, bet ir naudoti bet kuriame kontekste vietoj konstantų. Šios funkcijos skaičiuojamos kompiliavimo metu, o ne vykdymo metu, todėl joms taikomi tam tikri apribojimai, pavyzdžiui, galimybė skaityti tik iš konstantų. Naujoje versijoje pagrindinės operacijos su funkcijų rodyklėmis leidžiamos const funkcijų viduje (leidžiama kurti, perduoti ir mesti rodykles, bet ne iškviesti funkcijos rodyklėmis); bruožų ribos bendriesiems const funkcijų parametrams, pvz., T: Kopijuoti; dinamiškai išsiunčiami bruožai (dyn Bruožas); impl Funkcijos argumentų ir grąžinimo reikšmių bruožų tipai.
  • Srautas apdoroja „Stdin“, „Stdout“ ir „Stderr“ std::io, kai užrakintas, dabar turi statinį tarnavimo laiką („statinis“), todėl galima naudoti tokias konstrukcijas kaip „let out = std::io::stdout().lock();“ su rankenos gavimu ir užrakto nustatymu viena išraiška.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Rašykite žymekliui
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::procesas::Nutraukimas
    • std::thread::JoinHandle::is_baigtas
  • Atributas "const", kuris nustato galimybę jį naudoti bet kuriame kontekste vietoj konstantų, naudojamas funkcijose:
    • ::offset ir ::offset
    • ::wrapping_offset ir ::wrapping_offset
    • ::add ir ::add
    • ::sub ir ::sub
    • ::wrapping_add ir ::wrapping_add
    • ::wrapping_sub ir ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Be to, galite atkreipti dėmesį į straipsnį „Rust: A Critical Retrospective“ su „Rust“ kalbos įspūdžių santrauka po to, kai jame buvo parašytas 100 tūkstančių kodo eilučių kuriant „Xous“ mikrobranduolių operacinę sistemą, naudojamą programinėje įrangoje. Trūkumai yra sunkiai suprantama sintaksė, neišsamumas ir nuolatinis kalbos tobulinimas, pakartojamų versijų trūkumas, tipiškos pasitikėjimo Crates.io priklausomybės problemos ir poreikis laikytis tam tikros disciplinos rašant saugų kodą. Funkcijos, kurios viršijo lūkesčius, apima įrankius, skirtus kodo pertvarkymui ir greito prototipų kūrimo metu pridėtų „įsilaužimų“ pertvarkymui.

Šaltinis: opennet.ru

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