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

ËshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.65, e cila Ă«shtĂ« zhvilluar fillimisht nga projekti Mozilla dhe tĂ« tanishme po zhvillohet nĂ«n mbrojtjen e njĂ« organizate tĂ« pavarur jofitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e menaxhimit tĂ« memories dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« tĂ« ekzekutimit tĂ« detyrave, duke shmangur kĂ«shtu pĂ«rdorimin e mbledhĂ«sve tĂ« plehrave dhe runtime (runtime pĂ«rfshin vetĂ«m inicializimin bazĂ« dhe pĂ«rkrahjen e bibliotekĂ«s standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.

Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

TĂ« rejat kryesore:

  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r llojet e pĂ«rgjithshme tĂ« asociuar (GAT, Generic Associated Types), tĂ« cilat ofrojnĂ« mundĂ«sinĂ« pĂ«r tĂ« krijuar pseudonime llojesh tĂ« asociuar me njĂ« lloj tjetĂ«r dhe lejojnĂ« lidhjen e konstruktoreve tĂ« llojeve me tipazhe. trait Foo { type Bar; }
  • ËshtĂ« realizuar shprehja «let 
 else», e cila lejon kontrollin e njĂ« kushti pĂ«r pĂ«rputhshmĂ«rinĂ« me njĂ« model menjĂ«herĂ« brenda shprehjes «let» dhe ekzekuton kod tĂ« rastĂ«sishĂ«m, nĂ«se modeli nuk pĂ«rputhet. let Ok(count) = u64::from_str(count_str) else { panic!(«Nuk mund tĂ« interpretoj numrin: ‘{count_str}'»); };
  • Lejohet pĂ«rdorimi i shprehjes break pĂ«r daljen e parakohshme nga blloqet e emĂ«rtuara, duke pĂ«rdorur emrin e bllokut (etiketĂ«n) pĂ«r tĂ« pĂ«rcaktuar bllokun qĂ« do tĂ« pĂ«rfundohet. let result = ‘block: { do_thing(); if condition_not_met() { break ‘block 1; } do_next_thing(); if condition_not_met() { break ‘block 2; } do_last_thing(); 3 };
  • PĂ«r Linux Ă«shtĂ« shtuar mundĂ«sia e ruajtjes sĂ« ndarĂ« tĂ« tĂ« dhĂ«nave debug (split-debuginfo), e cila mĂ« parĂ« ishte e disponueshme vetĂ«m pĂ«r platformĂ«n macOS. Duke specifikuar opsionin «-Csplit-debuginfo=unpacked», tĂ« dhĂ«nat debuginfo nĂ« formatin DWARF do tĂ« ruhen nĂ« disa skedarĂ« objekt tĂ« veçantĂ« me zgjerimin «.dwo». Duke specifikuar «-Csplit-debuginfo=packed», do tĂ« krijohet njĂ« paketĂ« nĂ« formatin «.dwp», qĂ« pĂ«rfshin tĂ« gjitha tĂ« dhĂ«nat debuginfo pĂ«r projektin. PĂ«r integrimin e debuginfo-s direkt nĂ« seksionin .debug_* tĂ« objekteve ELF, mund tĂ« pĂ«rdoret opsioni «-Csplit-debuginfo=off».
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • Shenje «const», qĂ« pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst pĂ«rveç konstantave, Ă«shtĂ« pĂ«rdorur nĂ« funksionet ::offset_from dhe ::offset_from
  • NĂ« fazĂ«n pĂ«rfundimtare tĂ« pĂ«rkthimit tĂ« implementimit tĂ« protokollit LSP (Protokolli i Serverit tĂ« GjuhĂ«s) nĂ« rust-analyzer, implementimi i vjetĂ«r i Rust Language Server (RLS) Ă«shtĂ« zĂ«vendĂ«suar me njĂ« server-mashtruese, e cila jep njĂ« paralajmĂ«rim me propozimin pĂ«r tĂ« kaluar nĂ« pĂ«rdorimin e rust-analyzer.
  • GjatĂ« kompaktimit Ă«shtĂ« pĂ«rfshirĂ« mbĂ«shtetje pĂ«r pĂ«rhapjen inline tĂ« kodit tĂ« mesĂ«m MIR, qĂ« çon nĂ« pĂ«rshpejtimin e kompaktimit tĂ« paketave tĂ« tipit crate nga 3-10%.
  • PĂ«r tĂ« pĂ«rshpejtuar ndĂ«rtimet nĂ« orar, menaxherit tĂ« paketave Cargo i Ă«shtĂ« siguruar renditja e punĂ«ve qĂ« presin pĂ«r t’u pĂ«rfunduar nĂ« radhĂ«.

Gjithashtu mund të theksohet intervista mbi përdorimin e gjuhës Rust në kompaninë Volvo për zhvillimin e komponenteve të sistemeve informatike të makinave. Nuk planifikojnë të rishkruajnë kodin ekzistues dhe të testuar në Rust, por për kodin e ri, Rust është një nga opsionet e preferuara për të rritur cilësinë me kostot më të ulta. Grupet e punës të lidhura me përdorimin e gjuhës Rust janë krijuar gjithashtu në bashkësitë automobilistike AUTOSAR (Arkitektura e Sistemave të Hapura Automobilistike) dhe SAE (Shoqata e Ingeniervëve të Automobilave).

Për më tepër, David Kleidermacher, nënkryetar në Google për inxhinieri, diskutoi mbi përkthimin në gjuhën Rust të kodit të përdorur në platformën Android për menaxhimin e çelësave të enkriptimit, si dhe përdorimin e Rust në implementimin e protokollit DNS over HTTPS, në stack për çipat UWB (Ultra-Wideband) dhe në frameworkun e virtualizimit të Android (Android Virtualization Framework), i lidhur me çipin Tensor G2. Po ashtu, për Android po zhvillohen stack-e të reja për Bluetooth dhe Wi-Fi, të shkruara në Rust. Strategjia e përgjithshme është forcimi gradual i mbrojtjes fillimisht përmes përkthimit në përdorimin e Rust të komponentëve softuerikë më të pambrojtur dhe jetikë, e më pas duke përfshirë edhe nënkatësit e tjerë të lidhur. Vitin e kaluar, gjuhën Rust e përfshinë në listën e gjuhëve të lejuara për zhvillimin e platformës Android.

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