Lëshimi i gjuhës së programimit Rust 1.37

Publikuar lëshimi i gjuhës së programimit sistemor Rust 1.37, i zhvilluar nga projekti Mozilla. Gjuha fokusohet në punën e sigurt me memorien, ofron menaxhim automatik të memories dhe siguron mjete për të arritur një paralelism të lartë në ekzekutimin e detyrave, pa përdorur mbledhës plehrash apo runtime.

Menaxhimi automatik i memories në Rust përmban zhvilluesit nga manipulimi i treguesve dhe mbron ata nga problemet që lindin për shkak të punës me nivel të ulët me memorien, siç janë qasjet në hapësirën e memories pas lirimit të saj, dereferencimi i treguesve nul, dalja jashtë kufijve të tamponit etj. Për shpërndarjen e biblioteka, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti po zhvillohet menaxher për paketat Cargo, që lejon shfrytëzimin e bibliotekave të nevojshme për programin me një klik. Për vendosjen e bibliotekave, mbështetet repository crates.io.

Ndryshimet kryesore risitë:

  • NĂ« kompilatorin rustc Ă«shtĂ« siguruar mbĂ«shtetje pĂ«r optimizimin nĂ« bazĂ« tĂ« rezultateve tĂ« profilizimit tĂ« kodit (PGO, Profile-Guided Optimization),
    tĂ« cilat lejojnĂ« gjenerimin e kodit mĂ« tĂ« optimizuar nĂ« bazĂ« tĂ« analizĂ«s statistikore tĂ« grumbulluar gjatĂ« ekzekutimit tĂ« programit. PĂ«r tĂ« gjeneruar profilin, Ă«shtĂ« parashikuar flagu «-C profile-generate», ndĂ«rsa pĂ«r tĂ« pĂ«rdorur profilin gjatĂ« ndĂ«rtimit — «-C profile-use» (fillimisht programi ndĂ«rtohet me flagun e parĂ«, testohen dhe pas krijimit tĂ« profilit, ndĂ«rtohet pĂ«rsĂ«ri me flagun e dytĂ«);
  • Kur ekzekutohet komanda «cargo run», e cila pĂ«rdoret lehtĂ«sisht pĂ«r testimin e shpejtĂ« tĂ« aplikacioneve konsolĂ«, Ă«shtĂ« shtuar mundĂ«sia e zgjedhjes automatike tĂ« skedarit ekzekutues pĂ«r tĂ« filluar, nĂ« rast se paketa pĂ«rmban disa skedarĂ« ekzekutues. Skedari i ekzekutueshĂ«m si parazgjedhje pĂ«rcaktohet pĂ«rmes direktivĂ«s default-run nĂ« seksionin [package] me parametrat e paketĂ«s, e cila lejon tĂ« kaloni pa caktimin e qartĂ« tĂ« emrit tĂ« skedarit pĂ«rmes flagut «—bin» nĂ« çdo ekzekutim tĂ« «cargo run»;
  • NĂ« menaxherin e paketave Cargo Ă«shtĂ« integruar komanda «cargo vendor», e cila mĂ« parĂ« ofrohej si njĂ« paketĂ« tĂ« veçantĂ«. Komanda lejon organizimin e punĂ«s me njĂ« kopje lokale tĂ« varĂ«sive — pas ekzekutimit tĂ« «cargo vendor» tĂ« gjitha tekstet burimore tĂ« varĂ«sive tĂ« projektit shkarkohen nga crates.io nĂ« njĂ« katalog lokal, i cili mund tĂ« pĂ«rdoret pĂ«r punĂ« pa iu drejtuar crates.io (pas ekzekutimit tĂ« komandĂ«s jepet njĂ« udhĂ«zim pĂ«r ndryshimin e konfigurimit pĂ«r tĂ« pĂ«rdorur katalogun gjatĂ« ndĂ«rtimit). Kjo mundĂ«si tashmĂ« aplikohet pĂ«r organizimin e shpĂ«rndarjes sĂ« kompilatorit rustc me paketimin e tĂ« gjitha varĂ«sive nĂ« njĂ« arkiv me lĂ«shimin;
  • Ă«shtĂ« shtuar mundĂ«sia e krijimit tĂ« lidhjeve nĂ« variantet e enumerimeve (enum), duke pĂ«rdorur pseudonime (p.sh., nĂ« trupin e funksionit «fn increment_or_zero(x: ByteOption) mund tĂ« specifikohet «ByteOption::None => 0»), konstrukcione tĂ« llogaritjes sĂ« tipeve (â€čMyTypeâ€č..â€șâ€ș::variant => N) ose referencat Self (nĂ« blloqet me &self mund tĂ« specifikohet «Self::Quarter => 25»);
  • Ă«shtĂ« shtuar mundĂ«sia e krijimit tĂ« konstantave pa emra nĂ« makros. NĂ« vend tĂ« pĂ«rcaktimit tĂ« emrit tĂ« elementit nĂ« «const», tani mund tĂ« pĂ«rdoret simboli «_» pĂ«r zgjedhjen dinamike tĂ« njĂ« identifikuesi unik, qĂ« lejon shmangien e konflikteve tĂ« emrave gjatĂ« thirrjes sĂ« pĂ«rsĂ«ritur tĂ« makros;
  • Ă«shtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« atributit «#[repr(align(N))» me enumerimet (enums), duke pĂ«rdorur sintaksĂ« tĂ« ngjashme me pĂ«rcaktimin e strukturĂ«s AlignNâ€čTâ€ș me pĂ«rputhshmĂ«ri dhe pĂ«rdorimit tĂ« mĂ«passhĂ«m tĂ« AlignNâ€čMyEnumâ€ș;
  • NjĂ« grup i ri API Ă«shtĂ« stabilizuar, pĂ«rfshirĂ« metodat BufReader::buffer, BufWriter::buffer,
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option::xor,
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits dhe
    slice::copy_within.

Për më tepër, mund të theksohet fillimi i testimit projekti Async-std, që ofron një version asinkron të bibliotekës standarde Rust (porti i bibliotekës std, ku të gjitha ndërfaqet janë ofruar në versionin asinkron dhe janë gati për t'u përdorur me sintaksën async/await).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster