Lëshohet versioni i gjuhës së programimit të përgjithshëm Rust 1.84, i bazuar në projektin Mozilla, por tani po zhvillohet nën mbikëqyrjen e një organizate jofitimprurëse të pavarur, Rust Foundation. Gjuha është fokusuar në sigurimin e punës me memorie dhe ofron mjete për të arritur një paralelizëm të lartë në ekzekutimin e detyrave, duke u mbështetur pa përdorimin e mbledhësit të plehrave dhe runtime (runtime përbëhet nga inicializimi i bazës dhe mbështetjes së 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:
- NĂ« menaxherin e paketave Cargo Ă«shtĂ« stabilizuar mekanizmi i trajtimit tĂ« varĂ«sive, i cili zgjedh versionet e komponentĂ«ve tĂ« varur duke marrĂ« parasysh pĂ«rputhshmĂ«rinĂ« me versionet e kompilerit Rust, tĂ« deklaruara si minimalisht tĂ« mbĂ«shtetura nga projekti (MSRV, Minimum Supported Rust Version). MundĂ«sia e re lejon mbikĂ«qyrĂ«sit tĂ« shmangin nevojĂ«n pĂ«r tĂ« zgjedhur manualisht versionet e vjetra tĂ« çdo varĂ«sie nĂ« projekte qĂ« ruajnĂ« pĂ«rputhshmĂ«rinĂ« me versionet e vjetra tĂ« mjeteve Rust. Reza e re e pĂ«rcaktimit tĂ« varĂ«sive do tĂ« aktivizohet si parazgjedhje nĂ« publikimin e Rust 1.85, ndĂ«rsa tani Ă«shtĂ« e disponueshme nĂ« formatin e opsionit, pĂ«r ta aktivizuar atĂ« nĂ« seksionin "[resolver]" nĂ« skedarin ".cargo/config.toml" duhet tĂ« specifikohet âincompatible-rust-versions = "fallback"â.
- Ka filluar përkthimi i kompajlerit në një trajtues të ri të llojeve (trait solver), i dizajnuar për të kontrolluar kufijtë e aplikueshmërisë së tipazheve, normalizimin e llojeve dhe vlerësimin e përputhshmërisë së llojeve. Në versionin 1.84, trajtuesi i ri është angazhuar për të kontrolluar konsistencën e realizimeve të tipazheve, domethënë për të vlerësuar ekzistencën e jo më shumë se një tipaz për llojin e shqyrtuar duke marrë parasysh kodin nga crate-paketet e tjera. Kjo verifikim ka lejuar heqjen e problemeve në implementimin e vjetër të trajtuesit të llojeve, të cilat potencialisht mund të sillnin konflikte për shkak të ndërthurrjes së realizimeve të ndryshme të tipazheve.
- ĂshtĂ« propozuar njĂ« API i ri "Strict Provenance", i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« konvertuar njĂ« tregues nĂ« njĂ« numĂ«r tĂ« plotĂ« dhe anasjelltas, duke marrĂ« parasysh metadatĂ«n e lidhur me treguesin qĂ« jep informacion pĂ«r origjinĂ«n dhe fushĂ«n e pĂ«rdorimit (pĂ«rveç adresĂ«s, treguesit i shtohet vlera "provenance" me informacion mbi lidhjet me tregues tĂ« tjerĂ«, qĂ« lejojnĂ« tĂ« pĂ«rcaktohet ku dhe kur treguesi mund tĂ« qaset nĂ« memorje). Kur konvertohet njĂ« tregues nĂ« njĂ« numĂ«r tĂ« plotĂ« dhe anasjelltas, ndodhin sjellje tĂ« paqartĂ« pĂ«r shkak tĂ« vĂ«shtirĂ«sive nĂ« gjurmimin e origjinĂ«s sĂ« treguesit rezultues. API i ri lejon kryerjen e operacioneve tĂ« nivelit tĂ« ulĂ«t me treguesit, si ruajtja e informacionit shtesĂ« nĂ« bitĂ«t e poshtĂ«m tĂ« treguesit, pa e kthyer atĂ« nĂ« njĂ« numĂ«r tĂ« plotĂ«.
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- 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
- Priznaku «const» aplicohet në funksione:
- 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
- ĂshtĂ« stabilizuar mbĂ«shtetje pĂ«r inlinĂ« e asambleve pĂ«r arkitekturat s390x dhe Arm64EC.
- Për platformën e synuar WebAssembly është stabilizuar mbështetje për funksionalitetin multivalue, reference-types dhe tail-call.
- ĂshtĂ« realizuar niveli i dytĂ« i mbĂ«shtetjes pĂ«r platformĂ«n wasm32v1-none. Niveli i dytĂ« i mbĂ«shtetjes nĂ«nkupton garancinĂ« e ndĂ«rtimit.
Për më tepër, mund të theksohen disa projekte që lidhen me Rust:
- ĂshtĂ« publikuar lĂ«shimi i sistemit operativ Tock 2.2, i shkruar nĂ« gjuhĂ«n Rust dhe i orientuar pĂ«r pĂ«rdorim nĂ« mikrokompjuterĂ«. Sistemi mundĂ«son organizimin e ekzekutimit tĂ« disa aplikacioneve tĂ« pasigurt nĂ« pajisjet e inkorporuara, tĂ« cilat kanĂ« njĂ« kapacitet tĂ« kufizuar RAM-i, si sensorĂ«t, TPM (Moduli i PlatformĂ«s sĂ« Besueshme), çelĂ«sat e autentikimit dhe pajisjet e veshshme. MbĂ«shteten platforma me mikrokompjuterĂ« tĂ« bazuar nĂ« arkitekturĂ«n ARM Cortex-M dhe RISC-V. Karakteristika kryesore e Tock Ă«shtĂ« izolimi i niveleve tĂ« aplikacioneve, bĂ«rthamĂ«s dhe shtresĂ«s me drejtorĂ«, si dhe izolimi i çdo aplikacioni dhe drejtuari veçmas. PĂ«r izolim pĂ«rdoren si mundĂ«sitĂ« e gjuhĂ«s Rust, ashtu edhe ndarja nĂ« nivelin e mbrojtjes sĂ« memories.
- Projektet VEKOS (Sistemi Operativ i Verifikuar Eksperimental) zhvillon bërthamën e sistemit operativ në gjuhën Rust, që siguron verifikimin e komponenteve në ekzekutimin. Me çdo operacion në sistemin e skedarëve, krijimin e proceseve dhe alokimin e memories, formohet një konfirmim kriptografik që lejon verifikimin e operacionit gjatë ekzekutimit (implementimi krahasohet me aplikimin e blockchain për verifikimin e veprimeve në sistemin operativ). Në sistemin e skedarëve VKFS, për të siguruar integritetin dhe mbrojtjen nga shkatërrimi pas faktit, përdoret struktura 'pemë Merkle' (Merkle Tree), çdo degë e së cilës verifikon të gjitha degët dhe nyjat poshtë saj, falë hash-it të pemës. Alokimi i memories bëhet në modin COW (Copy-On-Write).
- NjĂ« grup kĂ«rkuesish nga Microsoft dhe Inria po zhvillon njĂ« nĂ«ngrup tĂ« gjuhĂ«s C â Mini-C, e cila Ă«shtĂ« e destinuar pĂ«r transaltim automatik tĂ« programeve nĂ« gjuhĂ«n C nĂ« njĂ« pĂ«rfaqĂ«sim nĂ« gjuhĂ«n Rust. Ndryshe nga kompilatorĂ«t c2rust, projekti i ri lejon gjenerimin e kodit Rust pa pĂ«rdorur unsafe, por Ă«shtĂ« fokusuar kryesisht nĂ« konvertimin e projekteve C qĂ« kanĂ« provimin formal tĂ« besueshmĂ«risĂ«. Supozohet se do tĂ« jetĂ« mĂ« e lehtĂ« fillimisht tĂ« pĂ«rkthehet njĂ« projekt C nĂ« njĂ« pĂ«rfaqĂ«sim nĂ« Mini-C, nĂ« tĂ« cilin nuk lejohen operacione aritmetike me tregues, sesa riprogramimi i blloqeve unsafe pas kompilimit tĂ« drejtpĂ«rdrejtĂ« nga C nĂ« Rust.
Realizimi i kompilatorit bazohet në mjetet e KaRaMeL. Mini-C është zhvilluar dhe testuar në kuadër të një projekti për rifaktorizimin në Rust të bibliotekës kriptografike HACL*, për të cilën është ofruar një provë formale e besueshmërisë. Një e tillë provë është përdorur për të demonstruar mundësinë e gjenerimit të kodit të sigurt në Rust nga Mini-C.
- Daniel Stenberg, autori i mjeteve curl, shpalli ndalimin e zhvillimit dhe mbështetjes së projektit Curl, një backend alternativ HTTP, i shkruar në Rust duke përdorur bibliotekën Hyper. Si shkak për këtë u përmend mungesa e interesit nga zhvilluesit dhe përdoruesit.
- ĂshtĂ« njoftuar lançimi i beta versionit tĂ« Shell-it Fish 4.0, tĂ« ri-shkruar nĂ« Rust. Kjo Ă«shtĂ« theksuar se pas dy viteve tĂ« zhvillimit, baza e kodit tĂ« Fish-it Ă«shtĂ« transferuar plotĂ«sisht nga C++ nĂ« Rust. Kalimi nĂ« Rust ndihmoi nĂ« zgjidhjen e problemeve me multithreading, siguroi mjete moderne qĂ« zbulojnĂ« gabime nĂ« fazĂ«n e kompilimit, rriti sigurinĂ« e punĂ«s meMemorinĂ« dhe bĂ«ri projektin mĂ« tĂ«rheqĂ«s pĂ«r zhvilluesit e rinj.
- Projekti Tor publikoi versionin Arti 1.3.2, një zbatim alternativ të klientit Tor në Rust. Arti ofron një bibliotekë të integruar, e cila mund të përdoret nga aplikacione të ndryshme. Gjatë krijimit të Arti, është marrë parasysh eksperienca e kaluar në zhvillimin e Tor për të shmangur problemet arkitekturore të njohura, duke e bërë projektin më modular dhe efikas. Degën 1.x e cila është shënuar si e përshtatshme për përdoruesit e zakonshëm, ofron të njëjtin nivel konfidencialiteti, përdorshmërie dhe stabiliteti si implementimi kryesor në C. Në versionin e ri, është vazhduar zhvillimi i RPC, është përgatitur mbështetje për relays dhe është shtuar 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 aplikohet njĂ« model tĂ« dhĂ«nash tĂ« drejtuar (Data Driven) pĂ«r pĂ«rcaktimin e logjikĂ«s sĂ« lojĂ«s, e ndĂ«rtuar mbi njĂ« set komponentesh tĂ« gatshme Bevy ECS (Entity Component System), tĂ« cilat mund tĂ« ekzekutohen paralelisht. MbĂ«shtetet renderimi 2D dhe 3D, animacioni skeletor, pĂ«rcaktimi i grafit tĂ« renderimit, sistemi i formimit tĂ« skenave, kuadri pĂ«r ndĂ«rtimin e ndĂ«rfaqes sĂ« pĂ«rdoruesit, dhe ndryshimet nĂ« skena dhe burime pa pasur nevojĂ« pĂ«r rinisje.
- ĂshtĂ« botuar editori i tekstit nĂ« konsolĂ«n Helix 25.01, i shkruar nĂ« Rust dhe qĂ« zgjerohet mbi idetĂ« qĂ« pĂ«rcaktojnĂ« vim dhe neovim. MbĂ«shtetet integrimi me serverĂ« LSP dhe Tree-sitter, pĂ«rzgjedhja e shumĂ« blloqeve njĂ«herĂ«sh, pĂ«rdorimi i shumĂ« kursoreve gjatĂ« renditjes, temat e dizajnit, protokolli i debug DAP (Debug Adapter Protocol).
- Motori i shfletuesit Servo, i shkruar në Rust, ka marrë mbështetje për modin e errët. Madhësia e shfletuesit ServoShell është reduktuar me 20%. Mbështetje për specifikimet web është arritur deri në mundësinë e hyrjes dhe leximit të mesazheve në Discord (dërgimi i mesazheve aktualisht nuk është i mundur).
- Kompania Mozilla ka prezantuar mjetin Uniffi për React Native për krijimin e moduleve për React Native në gjuhën Rust.
- Janë kryer teste për performancën e koduesve të imazheve në formatin PNG. Dekoduesit në Rust (png, zune-png, wuffs) rezultuan më të shpejtë se dekoduesit në C (libpng, spng, stb_image). Për shembull, paketi crate png (image-rs) e kaloi 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
