Rust 1.92 u publikua. Rust Projects për GUI, Sandboxing dhe Zhvillim Firmware

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

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster