Rust 1.61 forritunarmálsútgáfa

Útgáfa Rust 1.61 almennt forritunarmálsins, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið leggur áherslu á minnisöryggi og veitir leiðina til að ná mikilli samhliða vinnu á sama tíma og forðast notkun á sorphirðu og keyrslutíma (keyrslutími minnkar í grunnuppsetningu og viðhald á venjulegu bókasafni).

Minni meðhöndlunaraðferðir Rust bjarga þróunaraðilanum frá villum við meðhöndlun ábendinga og vernda gegn vandamálum sem koma upp vegna minnis meðhöndlunar á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísun núllbenda, offramkeyrsla á biðminni o.s.frv. Til að dreifa bókasöfnum, útvega smíði og stjórna ósjálfstæði, þróar verkefnið farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Minni öryggi er veitt í Rust á þýðingu tíma með tilvísun athugun, halda utan um eignarhald hlut, halda utan um líftíma hlut (umfang) og meta réttmæti minni aðgangs meðan kóða er keyrt. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökfræðilegar villur.

Helstu nýjungar:

  • Það er hægt að skilgreina eigin skilakóða frá aðalaðgerðinni. Upphaflega gat aðalaðgerð Rust aðeins skilað gerðinni "()" (eining), sem gaf alltaf til kynna árangursríka útgöngustöðu nema verktaki hafi beinlínis kallað "process::exit(kóði)" aðgerðina. Í Rust 1.26, með því að nota óstöðugan uppsagnareiginleika í aðalaðgerðinni, var hægt að skila gildunum „Ok“ og „Err“, sem samsvara EXIT_SUCCESS og EXIT_FAILURE kóðanum í C forritum. Í Rust 1.61 hefur Termination eiginleikinn verið gerður stöðugur og sérstök ExitCode gerð hefur verið lögð til að tákna sérstakan skilakóða, sem tekur út vettvangssértækar ávöxtunargerðir með því að gefa upp bæði fyrirfram skilgreinda fasta SUCCESS og FAILURE, og From aðferðina til að skila sérsniðnum skilakóða. notaðu std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } ExitCode::SUCCESS }
  • Viðbótargetu aðgerða sem skilgreind eru með orðatiltækinu „const fn“ hefur verið stöðug, sem hægt er að kalla ekki aðeins sem venjuleg föll, heldur einnig notuð í hvaða samhengi sem er í stað fasta. Þessar aðgerðir eru reiknaðar á tíma samantektar, ekki á keyrslutíma, þannig að þær eru háðar ákveðnum takmörkunum, svo sem hæfni til að lesa aðeins úr föstum. Í nýju útgáfunni eru grunnaðgerðir með aðgerðabendi leyfðar innan const aðgerða (að búa til, senda og varpa bendilum er leyfilegt, en ekki kalla aðgerð með bendili); eiginleikamörk fyrir almennar færibreytur const falla eins og T: Copy; eiginleikar sem hægt er að senda á kraftmikinn hátt (dyn eiginleiki); impl Eiginleikagerðir fyrir fallrök og skilgildi.
  • Straumurinn sér um Stdin, Stdout og Stderr í std::io hefur nú kyrrstæðan líftíma ("'static") þegar hann er læstur, sem gerir ráð fyrir byggingu eins og "let out = std::io::stdout().lock();" með því að ná tökum og setja lás í einum svip.
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Skrifaðu fyrir bendilinn<[u8; N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::proces::Uppsögn
    • std::thread::JoinHandle::er_finished
  • "const" eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í föllum:
    • <*const T>::offset og <*mut T>::offset
    • <*const T>::wrapping_offset og <*mut T>::wrapping_offset
    • <*const T>::add og <*mut T>::add
    • <*const T>::sub og <*mut T>::sub
    • <*const T>::wrapping_add og <*mut T>::wrapping_add
    • <*const T>::wrapping_sub og <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Að auki geturðu tekið eftir greininni „Rust: A Critical Retrospective“ með samantekt á birtingum af Rust tungumálinu eftir að hafa skrifað 100 þúsund línur af kóða í það við þróun Xous örkjarna stýrikerfisins sem notað er í fastbúnaði. Ókostir eru setningafræði sem er erfitt að skilja, ófullnægjandi og áframhaldandi þróun tungumálsins, skortur á endurteknum byggingum, dæmigerð vandamál með ávanatrausti í Crates.io og þörf á að viðhalda ákveðinni aga til að skrifa öruggan kóða. Eiginleikar sem fóru fram úr væntingum eru meðal annars verkfæri til að endurgera kóða og endurvinna „hakk“ sem bætt er við við hraða frumgerð.

Heimild: opennet.ru

Bæta við athugasemd