Lëshimi i Rust 1.84. Bërthamat Tock dhe Vekos, të shkruara në Rust. Dialekti Mini-C

ËshtĂ« publikuar versioni 1.84 i gjuhĂ«s sĂ« programimit tĂ« pĂ«rgjithshĂ«m Rust, e cila u krijua fillimisht nga Mozilla, por tani po zhvillohet nĂ«n mbĂ«shtetje tĂ« organizatĂ«s jo fitimprurĂ«se Rust Foundation. Gjuha pĂ«rqendrohet nĂ« sigurinĂ« e menaxhimit tĂ« memories dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizĂ«m tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke shmangur pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje pĂ«r biblioteken 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:

  • NĂ« menaxherin e paketave Cargo, mekanizmi i trajtimit tĂ« varĂ«sive Ă«shtĂ« stabilizuar, duke zgjedhur versionet e komponenteve tĂ« varura duke marrĂ« parasysh pĂ«rputhshmĂ«rinĂ« me versionet e kompilatorit Rust, tĂ« shpallura si tĂ« mbĂ«shtetura minimalisht nga projekti (MSRV, Minimum Supported Rust Version). Kjo mundĂ«si e re lejon pĂ«rmirĂ«simin e punĂ«s sĂ« mbĂ«shtetjes duke eliminuar nevojĂ«n pĂ«r zgjedhjen manuale tĂ« versioneve tĂ« vjetra tĂ« çdo varĂ«sie nĂ« projekte qĂ« ruajnĂ« pĂ«rputhshmĂ«rinĂ« me versionet mĂ« tĂ« vjetra tĂ« veglave Rust. Rejimi i ri i pĂ«rcaktimit tĂ« varĂ«sive do tĂ« aktivizohet si parazgjedhje nĂ« versionin Rust 1.85, ndĂ«rsa aktualisht Ă«shtĂ« nĂ« formĂ«n e njĂ« opsioni, pĂ«r aktivizimin e tĂ« cilit nĂ« seksionin "[resolver]" nĂ« skedarin ".cargo/config.toml" duhet tĂ« specifikohet ‘incompatible-rust-versions = "fallback"‘.
  • Ka filluar pĂ«rkthimi i kompilatorit nĂ« njĂ« trajtues tĂ« ri tĂ« llojeve (trait solver), i destinuar pĂ«r tĂ« kontrolluar kufijtĂ« e zbatueshmĂ«risĂ« sĂ« tipazheve, normalizimin e llojeve dhe vlerĂ«simin e pĂ«rputhshmĂ«risĂ« sĂ« llojeve. NĂ« versionin 1.84, trajtuesi i ri Ă«shtĂ« aktivizuar pĂ«r tĂ« verifikuar koherencĂ«n e realizimeve tĂ« tipazheve, domethĂ«nĂ« pĂ«r tĂ« vlerĂ«suar ekzistencĂ«n e mĂ« shumĂ« se njĂ« tipaz pĂ«r llojin nĂ« fjalĂ«, duke marrĂ« parasysh kodin nga crate-paketat e tjera. Verifikimi i pĂ«rmendur ka lejuar eliminimin e problemeve nĂ« realizimin e vjetĂ«r tĂ« trajtuesit tĂ« llojeve, qĂ« potencialisht mund tĂ« çonin nĂ« konflikte pĂ«r shkak tĂ« mbivendosjes sĂ« realizimeve tĂ« ndryshme tĂ« tipazheve.
  • NjĂ« API i ri "Provenance i RreptĂ«" Ă«shtĂ« propozuar, i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« konvertuar treguesin nĂ« njĂ« numĂ«r tĂ« plotĂ« dhe anasjelltas, duke pasur parasysh metadatet e lidhura me treguesin qĂ« pĂ«rmbajnĂ« informacion mbi origjinĂ«n dhe fushĂ«n e pĂ«rdorimit (pĂ«rveç adresĂ«s, njĂ« vlerĂ« "provenance" lidhet me treguesin pĂ«r tĂ« dhĂ«nĂ« informacion mbi lidhjet me tregues tĂ« tjerĂ«, duke lejuar pĂ«rcaktimin e kur dhe ku mund tĂ« aksesojĂ« memoria treguesi). Kur konvertohet treguesi nĂ« numĂ«r tĂ« plotĂ« dhe anasjelltas, ndodhin sjellje tĂ« paqartĂ« pĂ«r shkak tĂ« vĂ«shtirĂ«sive nĂ« ndjekjen e origjinĂ«s sĂ« treguesit rezultues. API i ri lejon kryerjen e operacioneve tĂ« nivelit tĂ« ulĂ«t me tregues, tĂ« tilla si ruajtja e informacionit shtesĂ« nĂ« bitĂ«t e posaçëm tĂ« treguesit, pa konvertuar treguesin nĂ« njĂ« numĂ«r tĂ« plotĂ«.
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • Ipv6Addr::is_unique_local
    • Ipv6Addr::is_unicast_link_local
    • core::ptr::with_exposed_provenance
    • core::ptr::with_exposed_provenance_mut
    • ::addr
    • ::expose_provenance
    • ::with_addr
    • ::map_addr
    • ::isqrt
    • ::checked_isqrt
    • ::isqrt
    • NonZero::isqrt
    • core::ptr::without_provenance
    • core::ptr::without_provenance_mut
    • core::ptr::dangling
    • core::ptr::dangling_mut
    • Pin::as_deref_mut
  • T symboli «const» Ă«shtĂ« aplikuar nĂ« funksionet:
    • AtomicBool::from_ptr
    • AtomicPtr::from_ptr
    • AtomicU8::from_ptr
    • AtomicU16::from_ptr
    • AtomicU32::from_ptr
    • AtomicU64::from_ptr
    • AtomicUsize::from_ptr
    • AtomicI8::from_ptr
    • AtomicI16::from_ptr
    • AtomicI32::from_ptr
    • AtomicI64::from_ptr
    • AtomicIsize::from_ptr
    • ::is_null
    • ::as_ref
    • ::as_mut
    • Pin::new
    • Pin::new_unchecked
    • Pin::get_ref
    • Pin::into_ref
    • Pin::get_mut
    • Pin::get_unchecked_mut
    • Pin::static_ref
    • Pin::static_mut
  • E stabilizuar mbĂ«shtetje pĂ«r inline assembler pĂ«r arkitat s390x dhe Arm64EC.
  • PĂ«r platformĂ«n e synuar WebAssembly, mbĂ«shtetje pĂ«r funksionalitetin multivalue, reference-types dhe tail-call Ă«shtĂ« stabilizuar.
  • ËshtĂ« realizuar niveli i dytĂ« i mbĂ«shtetjes pĂ«r platformĂ«n wasm32v1-none. Niveli i dytĂ« i mbĂ«shtetjes nĂ«nkupton garantimin e ndĂ«rtimit.

Mund të përmenden gjithashtu disa projekte të lidhura me Rust:

  • ËshtĂ« publikuar versione i sistemit operativ Tock 2.2, i shkruar nĂ« gjuhĂ«n Rust dhe i fokusuar nĂ« pĂ«rdorimin nĂ« mikro-kontrollerĂ«. Sistemi mundĂ«son ekzekutimin e disa aplikacioneve qĂ« nuk meritojnĂ« besim nĂ« pajisjet e integruara me memorie tĂ« kufizuar RAM, si sensorĂ«t, TPM (Moduli i PlatformĂ«s sĂ« Besuar), çelĂ«sat e autentikimit dhe pajisjet e veshura. PĂ«rdoren platforma me mikro-kontrollerĂ« tĂ« bazuar nĂ« arkitekturĂ«n ARM Cortex-M dhe RISC-V. NjĂ« veçori kyçe e Tock Ă«shtĂ« izolimi i niveleve tĂ« aplikacioneve, njĂ«sisĂ« qendrore dhe layers me drejtorĂ«, si dhe izolimi i çdo aplikacioni dhe drejtori tĂ« veçantĂ«. Izolimi arrihet si nga mundĂ«sitĂ« e gjuhĂ«s Rust, ashtu edhe nga ndarja nĂ« nivelin e mbrojtjes sĂ« memories.
  • Projekti VEKOS (Sistemi i Verifikuar Eksperimental i Kernelit) zhvillon kernelin e sistemit operativ nĂ« gjuhĂ«n Rust, duke siguruar verifikimin e komponenteve qĂ« ekzekutohen. NĂ« çdo operacion me sistemin e skedarĂ«ve, krijimin e proceseve dhe ndarjen e memories, formohet njĂ« konfirmimkriptografik, qĂ« lejon verifikimin e operacionit gjatĂ« ekzekutimit (implementimi krahasohet me pĂ«rdorimin e blockchain pĂ«r verifikimin e veprimeve nĂ« sistemin operativ). NĂ« sistemin e skedarĂ«ve VKFS, pĂ«r tĂ« siguruar integritetin dhe mbrojtjen nga ndryshimet retroaktive, pĂ«rdoret struktura 'pemĂ« Merkle' (Merkle Tree), ku çdo degĂ« verifikon tĂ« gjitha degĂ«t dhe nyjat nĂ«nĂ«shtrohen, falĂ« hashimit tĂ« strukturĂ«s pemore. Ndarja e memories kryhet nĂ« modalitetin COW (Copy-On-Write).
  • NjĂ« grup hulumtuesish nga Microsoft dhe Inria po zhvillon njĂ« nĂ«ngrup tĂ« gjuhĂ«s C — Mini-C, e cila Ă«shtĂ« e destinuar pĂ«r pĂ«rkthimin automatike tĂ« programeve tĂ« shkruara nĂ« gjuhĂ«n C nĂ« njĂ« pĂ«rfaqĂ«sim nĂ« gjuhĂ«n Rust. Ndryshe nga kompajleri c2rust, projekti i ri lejon gjenerimin e kodit Rust pa pĂ«rdorimin e unsafe, por Ă«shtĂ« kryesisht i orientuar drejt transformimit tĂ« projekteve C qĂ« kanĂ« dĂ«shmi formale tĂ« besueshmĂ«risĂ«. Kuptohet se do tĂ« jetĂ« mĂ« e lehtĂ« fillimisht tĂ« pĂ«rkthehet projekti C nĂ« njĂ« pĂ«rfaqĂ«sim nĂ« Mini-C, nĂ« tĂ« cilin nuk lejohen operacione aritmetike me tregues, sesa tĂ« rishkruhet blloket unsafe pas kompajlimit direkt nga C nĂ« Rust.

    Implementimi i kompajlerit bazohet në mjetin KaRaMeL. Mini-C është zhvilluar dhe testuar në kuadër të projektit të rishkrimit në Rust të bibliotekës kriptografike HACL*, për të cilën është ofruar një dëshmi formale e besueshmërisë. Një dëshmi e tillë është përdorur për të demonstruar mundësinë e gjenerimit të kodit të sigurt në Rust nga Mini-C.

  • Daniel Stenberg, autori i utilitarit curl, njoftoi se ka ndĂ«rprerĂ« zhvillimin dhe mbĂ«shtetje pĂ«r projektin Curl, njĂ« backend alternativ HTTP, i shkruar nĂ« Rust duke pĂ«rdorur bibliotekĂ«n Hyper. Si shkak u pĂ«rmend mungesa e interesit nga zhvilluesit dhe pĂ«rdoruesit.
  • U njoftua pĂ«r lĂ«shimin beta tĂ« shell-it Fish 4.0, e cila Ă«shtĂ« riparĂ« nĂ« gjuhĂ«n Rust. Theksohet se pas dy vitesh zhvillimi, kodi i bazĂ«s sĂ« Fish u la nĂ« mĂ«nyrĂ« tĂ« plotĂ« nga C++ nĂ« Rust. Kalimi nĂ« Rust ndihmoi nĂ« zgjidhjen e problemeve me shumĂ«thĂ«nien, siguroi mjete moderne qĂ« zbulojnĂ« gabimet gjatĂ« fazĂ«s sĂ« kompilimit, rriti sigurinĂ« nĂ« punĂ«n me kujtesĂ«n dhe e bĂ«ri projektin mĂ« tĂ«rheqĂ«s pĂ«r zhvilluesit e rinj.
  • Projekti Tor publikoi versionin Arti 1.3.2, njĂ« implementim alternativ tĂ« klientit Tor nĂ« gjuhĂ«n Rust. Arti ofron njĂ« bibliotekĂ« tĂ« integruar qĂ« mund tĂ« pĂ«rdoret nga aplikacione tĂ« ndryshme. GjatĂ« krijimit tĂ« Arti, Ă«shtĂ« marrĂ« parasysh pĂ«rvoja e kaluar e zhvillimit tĂ« Tor pĂ«r tĂ« shmangur problemet e njohura arkitektonike, duke e bĂ«rĂ« projektin mĂ« modular dhe eficiente. Dega 1.x Ă«shtĂ« shĂ«nuar si e pĂ«rshtatshme pĂ«r pĂ«rdorim nga pĂ«rdoruesit e zakonshĂ«m dhe ofron tĂ« njĂ«jtin nivel privatĂ«sie, pĂ«rdorueshmĂ«rie dhe stabiliteti si implementimi kryesor nĂ« gjuhĂ«n C. NĂ« versionin e ri, vazhdon zhvillimi i RPC, pĂ«rgatitet implementimi i mbĂ«shtetjes pĂ«r relĂ© dhe shtohet mbrojtja nga sulmet DoS nĂ« shĂ«rbimet Onion.
  • ËshtĂ« publikuar versioni i motorit tĂ« lojĂ«rave Bevy 0.15, i shkruar nĂ« Rust. NĂ« motor pĂ«rdoret njĂ« model datacenter (Data Driven) pĂ«r pĂ«rcaktimin e logjikĂ«s sĂ« lojĂ«s, i ndĂ«rtuar mbi njĂ« set komponentĂ«sh tĂ« gatshĂ«m Bevy ECS (Entity Component System), tĂ« cilĂ«t mund tĂ« ekzekutohen paralelisht. MbĂ«shtetet renderimi 2D dhe 3D, animacioni skeletor, pĂ«rcaktimi i grafit tĂ« renderimit, sistemi i formimit tĂ« skenave, njĂ« kornizĂ« pĂ«r ndĂ«rtimin e ndĂ«rfaqes sĂ« pĂ«rdoruesit, dhe modificimi i skenave dhe burimeve pa nevojĂ«n e rihapjes.
  • ËshtĂ« publikuar editori konsolĂ« Helix 25.01, i shkruar nĂ« Rust dhe qĂ« shtrin idetĂ« e krijuara nĂ« vim dhe neovim. MbĂ«shtetet integrimi me serverĂ«t LSP dhe me Tree-sitter, pĂ«rzgjedhja e disa blloqeve nĂ« tĂ« njĂ«jtĂ«n kohĂ«, pĂ«rdorimi i disa kursori gjatĂ« redaktimit, temat e paraqitjes, dhe protokolli i debug-ut DAP (Debug Adapter Protocol).
  • NĂ« motorin e shfletuesit Servo, i shkruar nĂ« Rust, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r modalitetin e errĂ«t. WshtĂ« reduktuar madhĂ«sia e shfletuesit ServoShell me 20%. MbĂ«shtetje pĂ«r specifikimet web Ă«shtĂ« pĂ«rmirĂ«suar deri nĂ« mundĂ«sinĂ« e hyrjes dhe leximit tĂ« mesazheve nĂ« Discord (dĂ«rgimi i mesazheve Ă«shtĂ« ende i pamundur).
  • Kompania Mozilla prezantoi instrumentin Uniffi for React Native pĂ«r krijimin e moduleve pĂ«r React Native nĂ« gjuhĂ«n Rust.
  • U krye testimi i performancĂ«s sĂ« koduesve tĂ« imazhĂ«ve nĂ« formatin PNG. Dekoduesit nĂ« Rust (png, zune-png, wuffs) dolĂ«n mĂ« tĂ« shpejtĂ« se dekoduesit nĂ« C (libpng, spng, stb_image). PĂ«r shembull, paketa crate png (image-rs) e tejkaloi libpng me 1.8 herĂ« nĂ« sistemin x86 dhe me 1.5 herĂ« nĂ« sistemin ARM. image-rs: 375.401 MP/s (mesatar) 318.632 MP/s (geomean) zune-png: 376.649 MP/s (mesatar) 302.529 MP/s (geomean) wuffs: 376.205 MP/s (mesatar) 287.181 MP/s (geomean) libpng: 208.906 MP/s (mesatar) 173.034 MP/s (geomean) spng: 299.515 MP/s (mesatar) 235.495 MP/s (geomean) stb_image: 234.353 MP/s (mesatar) 171.505 MP/s (geomean)

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster