Publikimi i gjuhës programuese Rust 1.37

botuar lëshimi i gjuhës programuese të sistemit Ndryshku 1.37, e themeluar nga projekti Mozilla. Gjuha fokusohet në sigurinë e kujtesës, siguron menaxhimin automatik të kujtesës dhe ofron një mjet për të arritur paralelizëm të lartë të detyrave pa përdorur një grumbullues mbeturinash ose kohëzgjatjeje.

Menaxhimi automatik i kujtesës i Rust e çliron zhvilluesin nga manipulimi i treguesit dhe mbron nga problemet që lindin nga manipulimi i nivelit të ulët të kujtesës, të tilla si akseset e memories pa pagesë, çreferencat e treguesit null, tejkalimet e buferit dhe të ngjashme. Një menaxher paketash po zhvillohet për të shpërndarë bibliotekat, për të siguruar montimin dhe për të menaxhuar varësitë nga projekti. ngarkesë, duke ju lejuar të merrni bibliotekat e nevojshme për programin me një klik. Një depo mbështetet për të pritur bibliotekat arka.io.

Kryesore risitë:

  • Në përpiluesin rustc siguruar mbështetje për optimizimin bazuar në rezultatet e profilizimit të kodit (PGO, Optimizimi i udhëhequr nga profili),
    duke ju lejuar të gjeneroni kode më optimale bazuar në analizën e statistikave të grumbulluara gjatë ekzekutimit të programit. Për të gjeneruar një profil, ofrohet flamuri "-C profile-generate", dhe për të përdorur profilin gjatë montimit - "-C profile-use" (fillimisht, programi mblidhet me flamurin e parë, shkon përreth dhe pas krijimit profili, rimontohet me flamurin e dytë);

  • Gjatë ekzekutimit të komandës "cargo run", e cila është e përshtatshme për t'u përdorur për testimin e shpejtë të aplikacioneve të konsolës, aftësia për të zgjedhur automatikisht një skedar të ekzekutueshëm për ekzekutim është shtuar nëse ka disa skedarë të ekzekutueshëm në paketë. Skedari i paracaktuar që do të ekzekutohet përcaktohet përmes direktivës së ekzekutimit të paracaktuar në seksionin [package] me parametrat e paketës, e cila ju lejon të shmangni specifikimin e qartë të emrit të skedarit përmes flamurit "-bin" sa herë që ekzekutoni "cargo run";
  • Komanda "shitësi ngarkesash", e ofruar më parë si paketë e veçantë. Komanda ju lejon të organizoni punën me një kopje lokale të varësive - pas ekzekutimit të "shitësit të ngarkesave", të gjitha kodet burimore të varësive të projektit shkarkohen nga crates.io në një drejtori lokale, e cila më pas mund të përdoret për punë pa hyrë në arkat. io (pas ekzekutimit të komandës, shfaqet një sugjerim për ndryshimin e konfigurimit për të përdorur drejtorinë për ndërtime). Kjo veçori përdoret tashmë për të organizuar dorëzimin e përpiluesit rustc me paketimin e të gjitha varësive në një arkiv me lëshimin;
  • Tani është e mundur të krijohen lidhje me opsionet e numërimit duke përdorur pseudonimet e tipit (për shembull, në trupin e funksionit "fn increment_or_zero(x: ByteOption) mund të specifikoni "ByteOption:: Asnjë => 0"), shkruani konstruksionet e llogaritjes (‹ MyType‹.. ››::option => N) ose Vetë-qasjet (në blloqet c &self mund të specifikoni “Self::Quarter => 25”);
  • U shtua aftësia për të krijuar konstante pa emër në makro. Në vend që të përcaktoni emrin e elementit në "const", tani mund të përdorni karakterin "_" për të zgjedhur në mënyrë dinamike një identifikues që nuk përsëritet, duke shmangur konfliktet e emrit kur thërrisni përsëri makro;
  • U shtua aftësia për të përdorur atributin "#[repr(align(N))" me enums duke përdorur një sintaksë të ngjashme me përcaktimin e një strukture AlignN‹T› me shtrirje dhe më pas duke përdorur AlignN‹MyEnum›;
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë BufReader::buffer, BufWriter::buffer dhe
    Qeliza::from_mut,
    Qeliza::si_fetë_qelizash,
    DoubleEndedIterator::nth_back,
    Opsioni::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits dhe
    slice::copy_within.

Për më tepër, mund të vërehet fillimi i testimit projekti Async-std, i cili ofron një variant asinkron të bibliotekës standarde Rust (një port i bibliotekës std, në të cilën të gjitha ndërfaqet ofrohen në një version asinkron dhe janë gati për përdorim me sintaksën asinkronike/pritëse).

Burimi: opennet.ru

Shto një koment