Gjuha e programimit Rust 1.92, e themeluar nga projekti Mozilla, por që tani zhvillohet nën kujdesin e organizatës së pavarur jofitimprurëse Rust Foundation, është publikuar. Gjuha përqendrohet në sigurinë e memories dhe ofron mjete për arritjen e paralelizmit të lartë të ekzekutimit të detyrave, ndërkohë që funksionon pa përdorimin e një mbledhësi të mbeturinave dhe kohës së ekzekutimit (koha e ekzekutimit reduktohet në inicializimin bazë dhe mirëmbajtjen e bibliotekës standarde).
Metodat e trajtimit të memories Rust e ruajnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin për shkak të trajtimit të nivelit të ulët të kujtesës, të tilla si qasja në një zonë memorie pasi të jetë liruar, mosreferencimi i treguesve null, tejkalimet e buferit, etj. Për të shpërndarë bibliotekat, për të ofruar ndërtime dhe për të menaxhuar varësitë, projekti zhvillon menaxherin e paketave Cargo. Depoja e crates.io mbështetet për pritjen e bibliotekave.
Siguria e memories sigurohet në Rust në kohën e përpilimit përmes kontrollit të referencës, mbajtjes së gjurmës së pronësisë së objektit, mbajtjes së gjurmëve të jetëgjatësisë së objektit (scopes) dhe vlerësimit të saktësisë së aksesit në kujtesë gjatë ekzekutimit të kodit. Rust siguron gjithashtu mbrojtje kundër tejmbushjeve të numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pandryshueshme si parazgjedhje, ofron shtypje të fortë statike për të minimizuar gabimet logjike.
Risitë kryesore:
- Lloji "kurrë", i shënuar me simbolin "!" dhe që përcakton llogaritjet që nuk kthehen kurrë (për shembull, funksioni "exits", makroja "panic!" dhe sythet e pafundme që nuk kthehen kurrë), ka vazhduar të stabilizohet. Në versionin e ri, kontrollet Lint "never_type_fallback_flowing_into_unsafe" dhe "dependency_on_unit_never_type_fallback" janë ndryshuar nga paralajmërim në gjenerim gabimesh kompilimi si parazgjedhje. Këto kontrolle aktivizohen kur zbulohen probleme në kod kur përdoret lloji "kurrë".
Sipas vlerësimeve paraprake, probleme të ngjashme ekzistojnë në afërsisht 500 paketa arkash. Aktivizimi i kontrolleve të fijeve do të ndihmojë në përgatitjen për stabilizimin e tipit "kurrë", i cili aktualisht konsiderohet një veçori eksperimentale. Kontrollet e fijeve aktivizohen vetëm kur ndërtohen drejtpërdrejt paketa dhe nuk ndikojnë në ndërtimet e varësive. Ato gjithashtu mund të çaktivizohen duke përdorur atributin "#[lejo]".
- Sjellja e kontrollit tĂ« fillesĂ«s "unused_must_use", e cila aktivizohet kur vlera e kthimit tĂ« njĂ« funksioni injorohet nĂ«se funksioni ose lloji i kthimit Ă«shtĂ« shĂ«nuar me atributin "#[must_use]", Ă«shtĂ« ndryshuar. Versioni i ri nuk gjeneron mĂ« paralajmĂ«rime pĂ«r injorimin e vlerave tĂ« kthimit pĂ«r llojet Result dhe ControlFlow, ku gjendja e gabimit pĂ«rcaktohet nga njĂ« lloj pa vlera ("!" ose "I PagabueshĂ«m"). PĂ«r shembull, "fn can_never_fail() -> Result<(), I PagabueshĂ«m> {âŠ}".
- Sjellja e flamurit "-Cpanic=abort", i cili, kur specifikohet, aktivizon gjenerimin e parazgjedhur të tabelave të çaktivizimit për gjurmim prapa, është ndryshuar. Opsioni "-Cforce-unwind-tables=no" është i disponueshëm për t'u rikthyer në sjelljen e mëparshme.
- Validimi i argumenteve të atributit "#[macro_export]" është forcuar. Specifikimi i atributeve të pavlefshme tani do të rezultojë në një gabim në vend të një paralajmërimi. Problemet me "#[macro_export]" do të kontrollohen jo vetëm gjatë ndërtimit të drejtpërdrejtë të paketave në arkë, por edhe gjatë ndërtimit të varësive.
- Në kodin e sigurt, lejohet të merren tregues të papërpunuar ("&raw [mut | const]") për fushat në llojet e bashkimit.
- Mbështetja e lidhjes dinamike është zbatuar për platformën e synuar mips64el-unknown-linux-muslabi64.
- Versioni minimal i mbështetur i zinxhirit të mjeteve të jashtme LLVM është ngritur në degën LLVM 20.
- Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë metodat dhe implementimet e tipareve janë stabilizuar:
- Jo-Zero ::div_ceil
- Vendndodhja::file_as_c_str
- RwLockWriteGuard::downgrade
- Kutia::new_zeroed
- Kutia::new_zeroed_slice
- Rc::new_zeroed
- Rc::new_zeroed_slice
- Arc::new_zeroed
- Arc::new_zeroed_slice
- btree_map::Hynja::insert_entry
- btree_map::VacantEntry::insert_entry
- impl Zgjero për proc_macro::TokenStream
- impl Zgjero për proc_macro::TokenStream
- impl Zgjero për proc_macro::TokenStream
- impl Zgjero për proc_macro::TokenStream
- Shenja "konst" përdoret në funksionet:
- <[_]>::rrotullo_majtas
- <[_]>::rrotate_right
- Menaxheri i paketave Cargo tani riprovon "git fetch" nëse kërkesa e parë dështon. Janë shtuar komponentë për integrimin me emulatorin e terminalit Ghostty. Një kapitull i ri mbi optimizimin e procesit të ndërtimit është shtuar në manual.
Për më tepër, dëshirojmë të nxjerrim në pah projektet dhe ngjarjet e njoftuara së fundmi që lidhen me Rust:
- Ferrocene njoftoi certifikimin IEC 61508 (SIL 2) për bibliotekën e saj libcore, e cila përfshin një nëngrup thirrjesh nga biblioteka bazë standarde Rust. Ky certifikim konfirmon pajtueshmërinë e bibliotekës me kërkesat për sistemet kritike industriale. Ferrocene është i njohur për krijimin e mjeteve për zhvillimin e aplikacioneve Rust për Sistemet Kritike të Sigurisë (SCS) dhe për mirëmbajtjen e Specifikimit të Gjuhës Ferrocene (FLS), i cili shërben si bazë për specifikimin referues të Rust.
- ĂshtĂ« publikuar Iced 0.14, njĂ« bibliotekĂ« pĂ«r krijimin e ndĂ«rfaqeve grafike tĂ« pĂ«rdoruesit duke pĂ«rdorur njĂ« model programimi reaktiv. Iced zbaton njĂ« arkitekturĂ« tĂ« njohur pĂ«r zhvilluesit qĂ« janĂ« tĂ« familjarizuar me gjuhĂ«n deklarative tĂ« ndĂ«rfaqes Elm. Ai ofron njĂ« grup tĂ« gatshĂ«m widget-esh me aftĂ«sinĂ« pĂ«r tĂ« krijuar trajtues asinkronĂ« dhe pĂ«r tĂ« aplikuar paraqitje adaptive tĂ« elementĂ«ve tĂ« ndĂ«rfaqes bazuar nĂ« madhĂ«sinĂ« e dritares dhe ekranit. Ofrohen disa motorĂ« renderimi, qĂ« mbĂ«shtesin Vulkan, Metal dhe DX12. NdĂ«r projektet kryesore qĂ« pĂ«rdorin Iced Ă«shtĂ« mjedisi i desktopit COSMIC.
Versioni i ri shton veglat "tabelë", "rrjet", "sensor", "fluturues" dhe "pin", si dhe aftësi të zgjeruara të veglave për të punuar me Markdown. Janë zbatuar veçoritë e mëposhtme: modaliteti i renderimit reaktiv; shirita lëvizës që shfaqen kur është e nevojshme; një API animacioni; mbështetje për metodën e hyrjes; modaliteti pa kokë; aftësia për të bërë ndryshime pa ndaluar aplikacionin (ringarkim i nxehtë); dekodim paralel i imazhit; dhe mjete për debugging dhe profilizim të performancës.
- Projekti Ribir zhvillon një bibliotekë për krijimin e aplikacioneve shumëplatformëshe me një ndërfaqe grafike, duke lejuar përdorimin e një baze të përbashkët kodi aplikacioni për të krijuar aplikacione grafike për platforma të ndryshme (Linux, Windows, macOS, në planet Android (dhe iOS). Një gjuhë ndërfaqeje deklarative e bazuar në makrot Rust, mbi 20 widget-e, tema dhe renderim i bazuar në wgpu janë të disponueshme.
- Prezantohet Island, një program i projektuar për ekzekutimin e aplikacioneve në sandbox. Ai përdor mekanizmin Landlock për sandboxing. Island ju lejon të krijoni rregulla në formatin TOML dhe t'i aplikoni ato në ekzekutuesit ekzistues të Landlock pa kërkuar ndonjë ndryshim në kod. Ndryshe nga Firejail, Island nuk kërkon privilegje root ose leje të veçanta.
- Google ka prezantuar Wasefire, një set mjetesh të bazuar në Rust për zhvillimin e firmware-it të sigurt. Ideja kryesore është të ekzekutohen trajtues (aplete) të veçantë dhe të izoluar mbi mjedisin (platformën) e firmware-it themelor. Zhvillimi i firmware-it është agnostik ndaj gjuhës - komponentët e firmware-it mund të dorëzohen si WebAssembly me zgjerime WASI (WebAssembly System Interface) dhe të ekzekutohen duke përdorur Wasmtime.
- ĂshtĂ« publikuar Patina 18, njĂ« firmware UEFI i shkruar nĂ« Rust. Patina ofron njĂ« zĂ«vendĂ«sim pĂ«r komponentĂ«t kryesorĂ« tĂ« firmware UEFI dhe mund tĂ« pĂ«rdoret pĂ«r tĂ« migruar gradualisht firmware-in ekzistues tĂ« shkruar nĂ« C nĂ« Rust.
- Projekti Brimstone po zhvillon një motor të ri JavaScript, të shkruar nga e para në Rust. Forma e tij aktuale mbështet tashmë mbi 97% të veçorive të ECMAScript 2026. Makina virtuale për ekzekutimin e kodit të bajtit bazohet në arkitekturën e motorit V8.
- Projekti Catten zhvillon një bërthamë për sistemin operativ eksperimental CharlotteOS, të shkruar në Rust. Bërthama mbështet kontrollin e aksesit të bazuar në aftësi (i ngjashëm me Fuchsia) dhe përdor një hierarki burimesh të shpërndara të ngjashme me Planin 9, me shtigje skedarësh të adresuara nga URI-të.
- ĂshtĂ« publikuar shell-i interaktiv Fish 4.2.0 (njĂ« shell interaktiv i lehtĂ« pĂ«r tâu pĂ«rdorur). Dega 4.x Ă«shtĂ« e njohur pĂ«r migrimin e plotĂ« tĂ« bazĂ«s sĂ« kodit nga C++ nĂ« Rust.
- Soundflare ka bërë që biblioteka tokio-quiche Rust të jetë me burim të hapur për të integruar mbështetjen për QUIC dhe HTTP/3 në aplikacione asinkrone bazuar në framework-un Tokyo.
- Projekti Tor ka publikuar Arti 1.7 dhe 1.8, një implementim të Rust të zinxhirit të mjeteve Tor. Sapo baza e kodit të Arti të arrijë një nivel të aftë për të zëvendësuar plotësisht implementimin e C, zhvilluesit e Tor synojnë ta bëjnë Arti implementimin kryesor të Tor dhe gradualisht ta heqin qafe mirëmbajtjen e implementimit të C.
Versioni i ri stabilizon zbatimin e zbulimit tĂ« kufizuar pĂ«r shĂ«rbimet onion duke pĂ«rdorur autorizimin e klientit ("zbulim i kufizuar"). PĂ«rveç proxy-ve SOCKS, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r proxy-t HTTP duke pĂ«rdorur metodĂ«n CONNECT. JanĂ« zbatuar afate kohore adaptive nĂ« varĂ«si tĂ« ngarkesĂ«s. ĂshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r tokio-console. Zhvillimi i funksionalitetit pĂ«r reletĂ« dhe serverat DrejtoritĂ« (Autoriteti i DrejtorisĂ«). U shtua komanda "arti hsc ctor-migrate" pĂ«r migrimin e çelĂ«save nga klienti C nĂ« ruajtjen e çelĂ«save Arti. U shtuan cilĂ«sime pĂ«r menaxhimin e nisjes sĂ« shĂ«rbimeve onion.
- ĂshtĂ« publikuar RustDB, njĂ« sistem menaxhimi bazash tĂ« dhĂ«nash (DBMS) i frymĂ«zuar nga PostgreSQL dhe i shkruar nĂ« Rust. Ai mbĂ«shtet operacionet bazĂ« SQL (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transaksione, MVCC, WAL (Write-Ahead Log), indekse dhe lidhje nĂ«pĂ«rmjet njĂ« protokolli tĂ« pajtueshĂ«m me PostgreSQL. RustDB u zhvillua duke pĂ«rdorur inteligjencĂ«n artificiale.
Burimi: opennet.ru
