Dalja e Rust 1.93. Projektet Rex, Fjall 3 dhe Arti 1.9.0

Ështe publikuar versioni 1.93 i gjuhĂ«s sĂ« programimit Rust, e cila Ă«shtĂ« nisur nga projekti Mozilla, por tani zhvillohet nĂ«n mbikĂ«qyrjen e njĂ« organizate jo fitimprurĂ«se tĂ« pavarur, Rust Foundation. Gjuha fokusohet nĂ« punĂ«n e sigurt me memorien dhe ofron mjete pĂ«r arritjen e njĂ« parallelizmi tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke shmangur pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime (shĂ«rbimi pĂ«rmblidhet nĂ« inicializimin bazĂ« dhe ruajtjen e bibliotekĂ«s standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • Biblioteka standarde C Musl, e pĂ«rfshirĂ« nĂ« paketĂ«n Rust, e cila pĂ«rdoret pĂ«r kompilim statik pĂ«r platformat e synuara "*-linux-musl" (aarch64-unknown-linux-musl, x86_64-unknown-linux-musl, powerpc64le-unknown-linux-musl etj.) nĂ« sisteme pa Musl, Ă«shtĂ« pĂ«rditĂ«suar nĂ« versionin 1.2.5. Versioni minimal i mbĂ«shtetur i Musl pĂ«r kompilim dinamik Ă«shtĂ« gjithashtu rritur nĂ« versionin 1.2.5. MĂ« parĂ« nĂ« Rust ishte pĂ«rdorur versioni Musl 1.2.3, i cili kishte probleme nĂ« implementimin e zgjidhĂ«sit DNS. NĂ« versionin Musl 1.2.4 u shtua mundĂ«sia pĂ«r dĂ«rgimin e njĂ« kĂ«rkese pĂ«rmes TCP nĂ« rast dĂ«shtimi tĂ« thirrjes pĂ«rmes UDP, duke zgjidhur problemin me kĂ«rkesat pĂ«r regjistrat e mĂ«dhenj DNS dhe duke rregulluar pĂ«rputhshmĂ«rinĂ« me serverĂ«t DNS rekursivĂ« qĂ« nuk mbĂ«shtesin kthimin e pjesĂ«ve tĂ« rezultatit nĂ« pĂ«rgjigjet e prera UDP. NĂ« versionin Musl 1.2.5, u implementua trajtimi i pĂ«rgjigjeve me sekuenca tĂ« gjata CNAME nĂ« zgjidhĂ«sin DNS dhe u zgjidh problemi qĂ« shkaktonte humbjen e disa pĂ«rgjigjeve tĂ« mĂ«dha tĂ« dĂ«rguara pĂ«rmes TCP.
  • Biblioteka standarde Ă«shtĂ« rishikuar pĂ«r tĂ« zgjidhur problemet me rienterabilitetin kur pĂ«rdoret nĂ« alokatorĂ«t globalĂ« tĂ« memories, tĂ« shkruara nĂ« Rust, makron std::thread_local! dhe funksionin std::thread::current, tĂ« cilat shkaktonin rekursivitet tĂ« pafund. PĂ«r tĂ« shmangur situatĂ«n ku std::thread_local! dhe std::thread::current, gjatĂ« pĂ«rpjekjes pĂ«r tĂ« alokuar memorien, thirrnin tĂ« njĂ«jtin alokator nĂ« tĂ« cilin ishin pĂ«rdorur, tani ata aplikojnĂ« drejtpĂ«rdrejt mekanizmin sistemik tĂ« alokimit tĂ« memories.
  • Brenda blloqeve "asm!" me kod assembler Ă«shtĂ« lejuar pĂ«rdorimi i atributeve "cfg", qĂ« do tĂ« thotĂ« se mund tĂ« menaxhohet aktivizimi i komplekseve tĂ« zgjeruara tĂ« komandave CPU nĂ« kontekstin e shprehjeve tĂ« veçanta brenda bllokut asm (mĂ« parĂ«, atributet "cfg" mund tĂ« pĂ«rcaktoheshin vetĂ«m pĂ«r tĂ«rĂ« bllokun asm). asm!( \/\/ ose global_asm! ose naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", \/\/ 
 #[cfg(target_feature = "sse2")] a = const 123, \/\/ vetĂ«m pĂ«rdorur nĂ« sse2 );
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • <[MaybeUninit]>::assume_init_drop
    • <[MaybeUninit]>::assume_init_ref
    • <[MaybeUninit]>::assume_init_mut
    • <[MaybeUninit]>::write_copy_of_slice
    • <[MaybeUninit]>::write_clone_of_slice
    • String::into_raw_parts
    • Vec::into_raw_parts
    • ::unchecked_neg
    • ::unchecked_shl
    • ::unchecked_shr
    • ::unchecked_shl
    • ::unchecked_shr
    • ::as_array
    • ::as_array_mut
    • ::as_array
    • ::as_mut_array
    • VecDeque::pop_front_if
    • VecDeque::pop_back_if
    • Duration::from_nanos_u128
    • char::MAX_LEN_UTF8
    • char::MAX_LEN_UTF16
    • Platformi qĂ«llim "riscv64a23-unknown-linux-gnu" Ă«shtĂ« transferuar nĂ« nivelin e dytĂ« tĂ« mbĂ«shtetjes, qĂ« nĂ«nkupton garancinĂ« e ndĂ«rtimit, por mungesĂ«n e garancive gjatĂ« kalimit tĂ« grupeve tĂ« testimit.
    • ShtesĂ«, mund tĂ« pĂ«rmenden disa projekte tĂ« lidhura me Rust:
  • PĂ«r bĂ«rthamĂ«n Linux po zhvillohet njĂ« kornizĂ« Rex, e cila lejon krijimin e shtesave pĂ«r bĂ«rthamĂ«n Linux nĂ« gjuhĂ«n Rust, tĂ« cilat mund tĂ« pĂ«rdoren pĂ«r tĂ« zgjeruar funksionalitetin e bĂ«rthamĂ«s nĂ« vend tĂ« eBPF. Rex ofron tĂ« njĂ«jtat garanci sigurie si eBPF, por pĂ«rdor mundĂ«sitĂ« e gjuhĂ«s Rust dhe njĂ« Runtime tĂ« lehtĂ« pĂ«r izolim dhe siguri. PĂ«r kĂ«to programe nuk pĂ«rdoret verifikuesi, dhe programet kompilohen nĂ« kod nativ nga kompajleri Rust.

Në programet Rex lejohet përdorimi i një nështrimi të gjuhës Rust, duke ofruar garanci sigurie. Në formën aktuale mbështeten 5 lloje programesh eBPF: kprobe, perf_event, tracepoint, xdp dhe tc. Ka mundësi të thërrasë funksione ndihmëse eBPF, të interesohet me struktura harta eBPF, të menaxhojë resurset e bërthamës, të trajtojë përjashtime dhe të përdorë mbështetje dhe abstraksione mbi strukturat e bërthamës.

  • Disponohet lĂ«shimi Fjall 3, njĂ« depo e integruar e shkruar nĂ« Rust, qĂ« punon me tĂ« dhĂ«na nĂ« formatin çelĂ«s-vlerĂ«. Ruajtja e tĂ« dhĂ«nave bĂ«het nĂ« formĂ«n e logut duke pĂ«rdorur pemĂ«n LSM (Log-Structured-Merge), si nĂ« RocksDB, nĂ« tĂ« cilĂ«n ndryshimet shkruhen duke shtuar tĂ« dhĂ«na nĂ« fund tĂ« skedarit. PĂ«r aksesin nĂ« DB ofrohet njĂ« API nĂ« stilin BTreeMap. MbĂ«shteten mundĂ«si si hapĂ«sirat emĂ«rore, kĂ«rkimi pĂ«rpara dhe prapa sipas intervaleve, kompresimi i ndĂ«rtuar, transaksionet qĂ« mund tĂ« serializohen, ruajtja e veçantĂ« e çelĂ«save dhe vlerave tĂ« saj shumĂ« tĂ« mĂ«dha, dhe mirĂ«mbajtja e vazhdueshme e DB-sĂ«.

    Në programet Rex, lejohet përdorimi i një nëngrupi të gjuhës Rust, që ofron garanci sigurie. Në formën aktuale, mbështeten 5 tipi programesh eBPF: kprobe, perf_event, tracepoint, xdp dhe tc. Ka mundësi për të thirrur funksione ndihmëse eBPF, për të ndërvepruar me strukturat e maps eBPF, menaxhuar burimet e bërthamës, trajtuar përjashtime dhe përdorur mbështetje dhe abstraksione mbi strukturat e bërthamës.

  • ËshtĂ« nĂ« dispozicion versioni Fjall 3, njĂ« depozim i integruar i shkruar nĂ« Rust, qĂ« punon me tĂ« dhĂ«na nĂ« formatin çelĂ«s-vlerĂ«. Ruajtja e tĂ« dhĂ«nave bĂ«het nĂ« formĂ«n e njĂ« logu duke pĂ«rdorur LSM-nyjĂ«n (Log-Structured-Merge), si nĂ« RocksDB, ku ndryshimet regjistrohen nĂ«pĂ«rmjet shtimit tĂ« tĂ« dhĂ«nave nĂ« fund tĂ« skedarit. PĂ«r qasjen nĂ« DB ofrohet njĂ« API nĂ« stilin e BTreeMap. MbĂ«shteten mundĂ«si tĂ« tilla si hapĂ«sira emĂ«rtimi, kĂ«rkimi i drejtpĂ«rdrejtĂ« dhe i kundĂ«rt sipas intervaleve, kompresimi i integruar, transaksionet e serializueshme, ruajtja e ndarĂ« e çelĂ«save dhe vlerave shumĂ« tĂ« mĂ«dha tĂ« lidhura me ta, dhe ruajtja automatike nĂ« prapavijĂ« e DB. Kodi Ă«shtĂ« i hapur nĂ«n licencĂ«n Apache 2.0.
  • Projekti Tor publikoi versionin Arti 1.9.0, implementimin e mjetit Tor, tĂ« shkruar nĂ« gjuhĂ«n Rust. Kur kodi i Arti arrin nivelin qĂ« mund tĂ« zĂ«vendĂ«sojĂ« plotĂ«sisht variantin nĂ« C, zhvilluesit e Tor synojnĂ« t'i japin Arti statusin e implementimit kryesor tĂ« Tor dhe gradualisht tĂ« ndalojnĂ« mbĂ«shtetje pĂ«r implementimin nĂ« C. NĂ« versionin e ri vazhdohet realizimi i funksionalitetit pĂ«r relays dhe serverĂ«sh autoritetet e drejtpĂ«rdrejta (Directory Authority), Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetjeja pĂ«r punĂ«n me portat qĂ« caktohen dinamikisht (proxy.socks_listen = "auto"), Ă«shtĂ« shtuar njĂ« API eksperimental pĂ«r menaxhimin e çelĂ«save pĂ«r shĂ«rbimet onion.

Burimi: opennet.ru

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