Izdaja programskega jezika Rust 1.37

Objavljeno izdaja sistemskega programskega jezika Rja 1.37, ki ga je ustanovil projekt Mozilla. Jezik se osredotoča na varnost pomnilnika, zagotavlja samodejno upravljanje pomnilnika in zagotavlja sredstva za doseganje visoke vzporednosti opravil brez uporabe zbiralnika smeti ali izvajalnega okolja.

Rustovo samodejno upravljanje pomnilnika reši razvijalca pred manipulacijo kazalcev in ščiti pred težavami, ki izhajajo iz manipulacije pomnilnika na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnih kazalcev, prekoračitev medpomnilnika itd. Za distribucijo knjižnic, zagotavljanje sestavljanja in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo, ki vam omogoča, da z enim klikom pridobite knjižnice, ki jih potrebujete za program. Repozitorij je podprt za gostovanje knjižnic zaboji.io.

Glavni inovacije:

  • V prevajalniku rustc zavarovano podpora za optimizacijo na podlagi rezultatov profiliranja kode (PGO, Profile-Guided Optimization),
    kar vam omogoča ustvarjanje bolj optimalne kode na podlagi analize statističnih podatkov, zbranih med izvajanjem programa. Za generiranje profila je na voljo zastavica “-C profile-generate” in za uporabo profila med sestavljanjem - “-C profile-use” (na začetku je program sestavljen s prvo zastavico, teče okoli in po ustvarjanju profil, se ponovno sestavi z drugo zastavico);

  • Pri izvajanju ukaza »cargo run«, ki je primeren za hitro testiranje konzolnih aplikacij, je bila dodana možnost samodejne izbire izvedljive datoteke za zagon, če je v paketu več izvršljivih datotek. Privzeta datoteka, ki se izvede, je določena z direktivo default-run v razdelku [package] s parametri paketa, kar vam omogoča, da se izognete izrecnemu podajanju imena datoteke prek zastavice »-bin« vsakič, ko zaženete »cargo run«;
  • Ukaz »prodajalec tovora«, prej dobavljen kot ločen paket. Ukaz vam omogoča, da organizirate delo z lokalno kopijo odvisnosti - po izvedbi »cargo vendor« se vse izvorne kode odvisnosti projekta prenesejo iz crates.io v lokalni imenik, ki ga lahko nato uporabite za delo brez dostopa do zabojev. io (po izvedbi ukaza se prikaže namig za spremembo konfiguracije za uporabo imenika za gradnje). Ta funkcija se že uporablja za organizacijo dostave prevajalnika rustc z pakiranjem vseh odvisnosti v enem arhivu z izdajo;
  • Zdaj je mogoče ustvariti povezave do možnosti enum z uporabo vzdevkov tipa (na primer v telesu funkcije »fn increment_or_zero(x: ByteOption) lahko podate »ByteOption::None => 0«), konstruktov za izračun tipa (‹ MyType‹.. ››::option => N) ali Self dostopi (v blokih c &self lahko podate “Self::Quarter => 25”);
  • Dodana možnost ustvarjanja neimenovanih konstant v makrih. Namesto definiranja imena elementa v "const", lahko zdaj uporabite znak "_" za dinamično izbiro neponavljajočega se identifikatorja, s čimer se izognete konfliktom imen pri ponovnem klicu makra;
  • Dodana možnost uporabe atributa "#[repr(align(N))" z enumi z uporabo sintakse, podobne definiranju strukture AlignN‹T› s poravnavo in nato z uporabo AlignN‹MyEnum›;
  • Nov del API-ja je bil premaknjen v stabilno kategorijo, vključno z BufReader::buffer, BufWriter::buffer in
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Možnost::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits in
    slice::copy_within.

Poleg tega je mogoče opozoriti začetek testiranja projekt Async-std, ki ponuja asinhrono različico standardne knjižnice Rust (vrata knjižnice std, v kateri so vsi vmesniki na voljo v asinhronski različici in so pripravljeni za uporabo s sintakso async/await).

Vir: opennet.ru

Dodaj komentar