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

Publikuar lëshimi i gjuhës së programimit sistemor Rust 1.36, 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ë:

  • Tipi i stabilizuar (trait) TĂ« ardhmes, i cili pĂ«rfaqĂ«son njĂ« vlerĂ«, llogaritja e sĂ« cilĂ«s mund tĂ« mos ketĂ« pĂ«rfunduar ende gjatĂ« pĂ«rdorimit tĂ« blloqeve async / .await. Vlerat asinkrone tĂ« pĂ«rcaktuara pĂ«rmes Future mundĂ«sojnĂ« vazhdimin e ekzekutimit nĂ« njĂ« fill tĂ« punĂ«s, duke pritur gjithashtu pĂ«r pĂ«rfundimin e llogaritjeve tĂ« njĂ« vlerĂ« tĂ« caktuar;
  • Biblioteka e stabilizuar alloc, e cila ofron tregues inteligjentĂ« dhe koleksione pĂ«r tĂ« menaxhuar vlerat e alokuara nĂ« memorie. PĂ«r alokimin e memories, std tani pĂ«rdor tipin Vec, i cili ri-eksportohet nga alloc. PĂ«rdorimi i veçantĂ« i alloc ka kuptim nĂ« aplikacione qĂ« nuk janĂ« tĂ« lidhura me std («#![no_std]»), si dhe nĂ« biblioteka tĂ« destinuara pĂ«r tĂ« operuar nĂ« programe tĂ« tilla pa std;
  • PĂ«r tĂ« anashkaluar verifikimet e inicializimit tĂ« duhur tĂ« vlerave suggested njĂ« tip ndĂ«rmjetĂ«s MaybeUninit, i cili mund tĂ« pĂ«rdoret si njĂ« alternativĂ« mĂ« tĂ« sigurt pĂ«r funksionin mem::uninitialized. Funksioni mem::uninitialized Ă«shtĂ« i dobishĂ«m pĂ«r krijimin e shpejtĂ« tĂ« masave, por e mashtron kompajlerin pĂ«r shkak se krijon njĂ« pĂ«rshtypje tĂ« inicializimit, ndĂ«rsa nĂ« tĂ« vĂ«rtetĂ« vlera mbetet e pa inicializuar. MaybeUninit lejon tĂ« shprehet qartĂ« tek kompajleri se vlera Ă«shtĂ« e pa inicializuar, tĂ« marrĂ« parasysh sjelljen e mundshme tĂ« paqartĂ« tĂ« lidhur me tĂ«, si dhe tĂ« organizojĂ« njĂ« kontroll nĂ«pĂ«rmjet «maybe_t:» dhe inicializimin nĂ« faza me nĂ«nshkrimin e pĂ«rfundimit tĂ« saj duke pĂ«rdorur thirrjen «.assume_init()». Me shfaqjen e MaybeUninit, funksioni mem::uninitialized u shpall i vjetruar dhe nuk rekomandohet pĂ«r pĂ«rdorim;
  • Teknika NLL (Rrethimi i Jo-LeksikĂ«ve), e cila zgjeroi sistemin e llogaritjes sĂ« kohĂ«s sĂ« jetesĂ«s sĂ« variablave tĂ« huazuara, Ă«shtĂ« stabilizuar pĂ«r gjuhĂ«n Rust 2015 (fillimisht NLL mbĂ«shtetej vetĂ«m nga Rust 2018). NĂ« vend tĂ« lidhjes sĂ« kohĂ«s sĂ« jetesĂ«s nĂ« nivelin leksikor, NLL bĂ«n llogaritjen nĂ« nivelin e grupit tĂ« treguesve nĂ« grafikĂ«n e fluksit tĂ« ekzekutimit. Ky qasje lejon pĂ«rmirĂ«simin e cilĂ«sisĂ« sĂ« kontrollit tĂ« huazimit tĂ« variablave (borrow checker) dhe lejon pĂ«r tĂ« ekzekutuar disa lloje tĂ« kodit tĂ« saktĂ«, pĂ«rdorimi i tĂ« cilit mĂ« parĂ« shkonte nĂ« njĂ« gabim. Sjellja e re gjithashtu e thjeshton ndjeshĂ«m debugin;
  • Ekluzhuar njĂ« realizim tĂ« ri tĂ« skemave asociative HashMap, i bazuar nĂ« aplikimin e strukturĂ«s Swiss Table (automatikisht ngarkohet hashbrown::HashMap, nĂ«se nuk Ă«shtĂ« shprehur ndryshe, pĂ«r shembull, std::HashMap, i cili bazohet nĂ« SipHash 1-3). NdĂ«rfaqja programuese mbeti e njĂ«jtĂ«, ndĂ«rsa dallimet e dukshme pĂ«r zhvilluesin pĂ«rfshijnĂ« njĂ« rritje tĂ« performancĂ«s dhe njĂ« reduktim tĂ« konsumit tĂ« memories;
  • NĂ« menaxherin e paketave cargo shtuar opcionin «—offline», qĂ« aktivizon modalitetin e punĂ«s pa lidhje me rrjetin, ku gjatĂ« instalimit tĂ« varĂ«sive pĂ«rdoren vetĂ«m paketat e ruajtura nĂ« sistemin lokal. NĂ«se njĂ« varĂ«si nuk Ă«shtĂ« e pranishme nĂ« cache-in lokal, do tĂ« jepet njĂ« gabim. PĂ«r tĂ« parakaluar varĂ«sitĂ« nĂ« cache-in lokal para kalimit nĂ« offline, mund tĂ« pĂ«rdoret komanda «cargo fetch»;
  • Realizuar mundĂ«sinĂ« e thirrjes sĂ« makros «dbg!» me disa argumente;
  • Shenja «const», e cila pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst nĂ« vend tĂ« konstantave, Ă«shtĂ« aplikuar pĂ«r metodat
    Layout::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::dangling dhe
    NonNull::cast;
  • NĂ« rangun e stabilĂ«ve Ă«shtĂ« kaluar njĂ« grusht i ri API, pĂ«rfshirĂ« metodat e stabilizuara
    task::Waker, task::Poll,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Read::read_vectored, Write::write_vectored,
    Iterator::copied,
    BorrowMut (për vargjet) dhe str::as_mut_ptr.

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