Ă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
