ĂshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit tĂ« pĂ«rgjithshĂ«m Rust 1.88, e bazuar nĂ« projektin Mozilla, tani nĂ«n mbikĂ«qyrjen e njĂ« organizate tĂ« pavarur jofitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e punĂ«s me memorien dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizm tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke mos pĂ«rdorur mbledhĂ«sin e plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje tĂ« bibliotekĂ«s 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:
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« specifikuar disa shprehje "let" brenda blokjeve kushtore "if" dhe "while" duke pĂ«rdorur operatorin "&&" (logjika AND). Shprehjet "let" mund tĂ« kombinohen me shprehjet kushtore boolean. Variablat e shpallura nĂ« shprehjet let mund tĂ« pĂ«rdoren nĂ« shprehjet kushtore qĂ« pasojnĂ«, si dhe brenda blokjeve "if" dhe "while". if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r shkruhjen e funksioneve "naked" tĂ« shĂ«nuara me atributin "#[unsafe(naked)]" dhe qĂ« pĂ«rmbajnĂ« brenda njĂ« thirrje "naked_asm!". Funksionet e krijuara nĂ« kĂ«tĂ« mĂ«nyrĂ« nuk kanĂ« epilog dhe prolog tĂ« gjeneruar nga kompajleri, duke lejuar zhvilluesin tĂ« kontrollojĂ« plotĂ«sisht kodin ndihmĂ«s assembler tĂ« lidhur me funksionin (funksioni "naked" pĂ«rmban vetĂ«m instruksionet assembler tĂ« pĂ«rcaktuara nga zhvilluesi dhe nuk pĂ«rfshin trajtues tĂ« veçantĂ« pĂ«r argumentet dhe vlerat e kthimit tĂ« shtuar nga kompajleri). Funksionet "naked" konsiderohen si njĂ« alternativĂ« mĂ« tĂ« pĂ«rshtatshme pĂ«r funksionet e pĂ«rcaktuara nĂ« blokun "global_asm!". #[unsafe(naked)] pub unsafe extern "sysv64" fn wrapping_add(a: u64, b: u64) -> u64 { core::arch::naked_asm!( "add rax, rdi, rsi", "ret" ); }
- Në gjuhën e predikateve, e cila aplikohet në atributet e kompilimit kushtor "cfg" dhe "cfg_attr" (që lejojnë përfshirjen ose çaktivizimin e pjesëve të kodit në varësi të kushteve të caktuara), është shtuar mbështetje për literalet boolean "true" dhe "false", të cilat identifikohen me konfigurimet që janë gjithmonë të aktivizuara ose gjithmonë të çaktivizuara. Këto literale gjithashtu mund të përdoren në makron "cfg!" dhe tabelat "[target]" në manifestet dhe konfigurimet për Cargo. Shprehjet cfg(true) dhe cfg(false) mund të përdoren në vend të cfg(all()) dhe cfg(any()) për të shprehur më qartë qëllimet e tua.
- Në menaxherin e paketave Cargo është përfshirë nisja automatike e mbledhësit të plehrave për të pastruar cache-në në katalogun e shtëpisë të përdoruesit. Pakot e ruajtura më parë në cache me varësi të shkarkueshme nuk janë pastruar, duke çuar në rritjen e vazhdueshme të konsumit të hapësirës disk. Mekanizmi i aktivizuar i mbledhjes së plehrave do të fshijë automatikisht skedarët crate të shkarkuar nga jashtë, të cilëve nuk iu është drejtuar për më shumë se 3 muaj dhe skedarët crate të instaluar lokal që nuk janë përdorur për më shumë se një muaj. Pastrimi i cache nuk aktivizohet kur përdoret në cargo opsionet "--offline" ose "--frozen".
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- Cell::update
- impl Default for *const T
- impl Default for *mut T
- mod ffi::c_str
- HashMap::extract_if
- HashSet::extract_if
- hint::select_unpredictable
- proc_macro::Span::line
- proc_macro::Span::column
- proc_macro::Span::start
- proc_macro::Span::end
- proc_macro::Span::file
- proc_macro::Span::local_file
- ::as_chunks
- ::as_rchunks
- ::as_chunks_unchecked
- ::as_chunks_mut
- ::as_rchunks_mut
- ::as_chunks_unchecked_mut
- T symboli «const» është aplikuar në funksionet:
- NonNull::replace
- ::replace
- std::ptr::swap_nonoverlapping
- Cell::replace
- Cell::get
- Cell::get_mut
- Cell::from_mut
- Cell::as_slice_of_cells
- ĂshtĂ« hequr niveli i parĂ« i mbĂ«shtetjes pĂ«r platformĂ«n e targetit i686-pc-windows-gnu.
Gjithashtu mund të theksohen ngjarjet e lidhura me Rust:
- Projekti Munal OS zhvillon një sistem operativ eksperimental, i shkruar në Rust dhe i bazuar në konceptin unikernel. Në Munal OS nuk përdoret multitasking i shtypur, mapimi i faqeve të memories dhe hapësira virtuale e adresës (përdoret përveç ndarjen e memories nga UEFI). Bërthama dhe aplikacionet ekzekutohen në një hapësirë adresimi të njëjtë duke përdorur modelin e sigurisë të bazuar në izolimin e sandboxit WASM (përfshin motorin wasmi për të ekzekutuar aplikacionet në formën e bytecode WebAssembly).
Sistemi operativ është i pajisur me një ndërfaqe grafike dhe mbështet menaxhimin nëpërmjet tastierës dhe mausit. Për zhvillimin e aplikacioneve grafike përdoret një toolkit i vet, me një bibliotekë widget. Për ndërveprimin në rrjet ofrohen një stak TCP dhe një driver për pajisjen e rrjetit. Ndër aplikacionet e disponueshme për Munal OS janë: shfletues web me mbështetje të bazuar për HTML dhe HTTPS, një redaktor teksti dhe një terminal për ekzekutimin e kodit në Python. Kodi është i hapur nën licencën MIT.

- Lëshimi i kernelit Asterinas 0.15.2, i shkruar në Rust dhe që ofron ABI të përputhshëm me kernelin Linux, u realizua. Ky kernel mbështet arkitekturat x86-64 dhe RISC-V, dhe implementon 206 nga 368 thirrjet sistemore të Linux. Në zhvillimin e kernelit marrin pjesë 45 zhvillues, kryesisht nga universitete të ndryshme kineze. Kernelit është ndërtuar duke përdorur arkitekturën "framekernel", në të cilën komponentët e kernelit vendosen në një hapësirë të përbashkët adresash, dhe siguria arrihet në nivelin e ndarjes logjike të kodit të sigurt dhe kodit, ku nuk përjashtohet shfaqja e problemeve të sigurisë. Të gjitha thirrjet sistemore, sistemet e skedarëve dhe drejtuesit janë implementuar në nivelin e Shërbimeve OS dhe nuk mund të përfshijnë blloqe të pasigurta. Kodi shpërndahet nën licencën MPL 2.0.
- Për kernelin Linux është përgatitur utiliteti rsched, i cili lejon analizimin e statistikave të funksionimit të planifikuesit të detyrave. Në praktikë, utiliteti mundëson vlerësimin e vendimeve të planifikuesit që lidhen me ndarjen e burimeve për proceset, si dhe monitorimin e vonesave që ndodhin gjatë planifikimit. Për mbledhjen e të dhënave në kernel përdoret nën-sistemi BPF, ndërsa instrumenti që funksionon në hapësirën e përdoruesit është shkruar në Rust. Autori i utilitetit është Chris Mason, krijuesi dhe arkitekti kryesor i sistemit të skedarëve Btrfs.
- Kompania Collabora njoftoi për zhvillimin e një variante të instrumentit Coccinelle për gjuhën Rust. Coccinelle është projektuar fillimisht për automatizimin e kërkimit dhe transformimit të kodit në gjuhën C në kernelin Linux. Transformimet përcaktohen në formën e rregullave që ngjajnë me patches të abstraguara, të pa lidhura me një pozitë të caktuar në kod.
- Zhvilluesit e GNOME prezantuan bibliotekën për ngarkimin e imazheve glycin, të shkruar në gjuhën Rust dhe që ofron dekodimin e imazheve me përdorimin e izolacionit sandbox. Mbështetet transferimi i përmbajtjes të dekoduar përmes gdk::Textures dhe nxjerrja e metadatas. Ofruan mbështetje për përdorimin e glycin në GTK4, si dhe një backend për angazhimin e glycin në bibliotekën GdkPixbuf, e cila përdoret në GNOME për ngarkimin e imazheve. Glycin tashmë është përdorur në shikuesin e imazheve Loupe, i ofruar si defolt në GNOME. Në këtë drejtim, backend-i për GdkPixbuf ofron mundësinë për të përdorur glycin në GNOME Shell, gjeneratorët e miniaturave dhe aplikacione të ndryshme GNOME, pa bërë ndryshime në këto programe.
Burimi: opennet.ru

