lëshimi i gjuhës së programimit sistemor , 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 , që lejon shfrytëzimin e bibliotekave të nevojshme për programin me një klik. Për vendosjen e bibliotekave, mbështetet repository .
Ndryshimet kryesore :
- Në kompilatorin rustc 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 . 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 projekti , 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
