Rust 1.37 programmeerimiskeele väljalase

avaldatud süsteemi programmeerimiskeele väljalase Rooste 1.37, mille asutas Mozilla projekt. Keel keskendub mälu ohutusele, pakub automaatset mäluhaldust ja vahendit ülesannete suure paralleelsuse saavutamiseks ilma prügikogujat või käitusaega kasutamata.

Rusti automaatne mäluhaldus säästab arendajat osutitega manipuleerimisest ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks töötab projekt välja paketihalduri last, mis võimaldab hankida programmi jaoks vajalikud teegid ühe klõpsuga. Hoidlat toetatakse teekide hostimiseks crates.io.

Kõik uuendused:

  • Rustc kompilaatoris kindlustatud koodi profiilide koostamise tulemustel põhineva optimeerimise tugi (PGO, profiilipõhine optimeerimine),
    mis võimaldab genereerida optimaalsemat koodi programmi täitmise ajal kogunenud statistika analüüsi põhjal. Profiili genereerimiseks on ette nähtud lipp “-C profile-generate” ja profiili kasutamiseks koostamisel – “-C profile-use” (esialgu komplekteeritakse programm esimese lipuga, jookseb ringi ja pärast loomist profiil, pannakse see teise lipuga uuesti kokku);

  • Käsu “cargo run” täitmisel, mida on mugav kasutada konsoolirakenduste kiireks testimiseks, on lisatud võimalus valida käivitatav fail automaatselt, kui paketis on mitu käivitatavat faili. Käivitatav vaikefail määratakse vaikimisi käitamise direktiivi kaudu jaotises [pakett] koos paketi parameetritega, mis võimaldab vältida failinime selgesõnalist määramist lipuga "-bin" iga kord, kui käivitate "cargo run";
  • Käsk „lastimüüja”, mis varem tarniti kui eraldi pakend. Käsk võimaldab teil korraldada tööd sõltuvuste kohaliku koopiaga - pärast “cargo vendor” täitmist laaditakse kõik projekti sõltuvuste lähtekoodid saidilt crates.io alla kohalikku kataloogi, mida saab seejärel kasutada tööks ilma kastidele juurde pääsemata. io (pärast käsu täitmist kuvatakse vihje konfiguratsiooni muutmiseks, et kasutada kataloogi ehitusteks). Seda funktsiooni kasutatakse juba rustc-kompilaatori tarnimise korraldamiseks koos kõigi sõltuvuste pakkimisega ühes väljalaskega arhiivis;
  • Nüüd on võimalik luua linke enum suvanditele kasutades tüübialiaseid (näiteks funktsiooni “fn increment_or_zero(x: ByteOption) põhiosas saab määrata “ByteOption::None => 0”), tüüparvutuskonstruktsioone (‹ MyType‹.. ››::option => N) või Self accesss (plokkides c &self saab määrata “Self::Quarter => 25”);
  • Lisatud on võimalus luua makrodesse nimetuid konstante. Selle asemel, et määrata elemendi nime "const", saate nüüd kasutada mittekorduva identifikaatori dünaamiliseks valimiseks märki "_", vältides makro uuesti kutsumisel nimekonflikte.
  • Lisati võimalus kasutada atribuuti "#[repr(align(N))" koos enumitega, kasutades süntaksit, mis sarnaneb struktuuri AlignN‹T› määratlemisele koos joondusega ja seejärel kasutades AlignN‹MyEnum›;
  • API uus osa on viidud stabiilsesse kategooriasse, sealhulgas BufReader::buffer, BufWriter::buffer ja
    Lahter::from_mut,
    Lahter::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Valik::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits ja
    slice::copy_within.

Lisaks võib märkida testimise algus projekti Async-std, mis pakub Rusti standardteegi asünkroonset varianti (std teegi port, milles kõiki liideseid pakutakse asünkroonilises versioonis ja mis on asünkroonse/ootama süntaksiga kasutamiseks valmis).

Allikas: opennet.ru

Lisa kommentaar