Rust 1.65 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar globojamos nepriklausomos ne pelno organizacijos „Rust Foundation“ bendrosios paskirties programavimo kalbos „Rust 1.65“ 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 bendrųjų susijusių tipų (GAT, Generic Associated Types) palaikymas, kuris leidžia kurti su kitu tipu susietus tipo slapyvardžius ir leidžia susieti tipo konstruktorius su bruožais. bruožas Foo { tipas Bar<'x>; }
  • Įdiegta išraiška „let ... else“, leidžianti patikrinti modelio atitikimo sąlygą tiesiai „let“ išraiškoje ir vykdyti savavališką kodą, jei modelis nesutampa. tegul Ok(count) = u64::from_str(count_str) else { panic!("Nepavyko išanalizuoti sveikojo skaičiaus: '{count_str}'"); };
  • Leiskite naudoti pertraukos sakinį, kad anksčiau laiko būtų galima išeiti iš pavadintų blokų, naudodami bloko pavadinimą (etiketę), kad identifikuotumėte bloką, kurį reikia nutraukti. tegul rezultatas = 'blokuoti: { do_thing(); if condition_not_met() { break 'blokas 1; } daryti_kitą_daiktą(); if condition_not_met() { break 'blokas 2; } daryk_paskutinį_ dalyką(); 3 };
  • „Linux“ sistemoje buvo pridėta galimybė atskirai išsaugoti derinimo informaciją (split-debuginfo), kuri anksčiau buvo prieinama tik „MacOS“ platformai. Nurodant parinktį „-Csplit-debuginfo=unpacked“, „debuginfo“ duomenys DWARF formatu bus įrašyti į kelis atskirus objekto failus su plėtiniu „.dwo“. Nurodžius „-Csplit-debuginfo=packed“, bus sukurtas vienas paketas „.dwp“ formatu, kuriame bus visi projekto derinimo informacijos duomenys. Norėdami integruoti derinimo informaciją tiesiai į ELF objektų skyrių .debug_*, galite naudoti parinktį „-Csplit-debuginfo=off“.
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • std::backtrace::Backtrace
    • Įrištas::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atributas „const“, kuris nustato galimybę jį naudoti bet kuriame kontekste vietoj konstantų, naudojamas funkcijose <*const T&>::offset_from ir <*mut T>::offset_from.
  • Paskutiniame LSP (Language Server Protocol) protokolo diegimo perkėlimo į rūdžių analizatorių etapo dalis, pasenęs Rust Language Server (RLS) diegimas buvo pakeistas stuburo serveriu, kuris pateikia įspėjimą su pasiūlymu pereiti prie naudojant rūdžių analizatorių.
  • Kompiliavimo metu įjungtas MIR tarpinio kodo tiesioginio diegimo palaikymas, o tai 3–10% pagreitina tipiškų dėžių paketų kompiliavimą.
  • Siekdama pagreitinti suplanuotas kūrimas, „Cargo“ paketų tvarkyklė pateikia eilėje laukiančių darbų rūšiavimą.

Be to, galite atkreipti dėmesį į interviu apie Rust kalbos naudojimą „Volvo“ kuriant automobilių informacinių sistemų komponentus. Neplanuojama perrašyti esamo ir išbandyto „Rust“ kodo, tačiau naujam kodui „Rust“ yra viena iš pageidaujamų galimybių gerinti kokybę mažesnėmis sąnaudomis. Darbo grupės, susijusios su rūdžių kalbos vartojimu, taip pat buvo sukurtos automobilių asociacijose AUTOSAR (AUTomotive Open System ARchitecture) ir SAE (Society of Automotive Engineers).

Be to, Davidas Kleidermacheris, „Google“ inžinerijos viceprezidentas, kalbėjo apie „Android“ platformoje naudojamo kodo, skirto šifravimo raktams valdyti, vertimą į Rust, taip pat apie „Rust“ naudojimą diegiant DNS per HTTPS protokolą krūvoje. UWB lustams (Ultra-Wideband) ir virtualizacijos sistemoje (Android Virtualization Framework), susijusioje su Tensor G2 lustu. Nauji „Bluetooth“ ir „Wi-Fi“ paketai, perrašyti „Rust“, taip pat kuriami „Android“. Bendra strategija yra palaipsniui stiprinti saugumą, pirmiausia konvertuojant pažeidžiamiausius ir gyvybiškai svarbius programinės įrangos komponentus į Rust, o tada plečiant kitus susijusius posistemius. Praėjusiais metais „Rust“ kalba buvo įtraukta į kalbų, kuriomis leidžiama kurti „Android“ platformą, sąrašą.

Šaltinis: opennet.ru

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