Versioni e programimit Rust 1.89 është publikuar, i vazhduar nga një projekt i Mozilla, por tani i zhvilluar nën mbikëqyrjen e një organizate jo fitimprurëse të pavarur, Rust Foundation. Gjuha përqendrohet në sigurimin e punës me kujtesë dhe ofron mjete për të arritur paralelizëm të lartë në ekzekutimin e detyrave, pa përdorur mbledhës të plehrave dhe runtime (runtime reduktohet në inicializimin themelor dhe mbështetje për bibliotekën 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:
- ĂshtĂ« ofruar mundĂ«sia e pĂ«rdorimit tĂ« simboli «_» si argument pĂ«r parametra tĂ« pĂ«rgjithshĂ«m me shenjĂ«n «const» pĂ«r nxjerrjen e vlerave tĂ« kĂ«tyre parametrave nĂ« bazĂ« tĂ« kontekstit pĂ«rreth. pub fn all_false() -> [bool; LEN] { [false; _] }
- ĂshtĂ« shtuar njĂ« paralajmĂ«rim tĂ« ri lint «mismatched_lifetime_syntaxes» pĂ«r tĂ« zgjidhur problemin e pĂ«rcaktimit tĂ« paqartĂ« tĂ« kohĂ«s sĂ« jetĂ«s nĂ« nĂ«nshkrimet e funksioneve kur pĂ«rdoret mekanizmi «lifetime elision» (qĂ« pĂ«rcakton automatikisht kohĂ«n e jetĂ«s sĂ« lidhjeve, duke lejuar qĂ« tĂ« evitoni çdo pĂ«rcaktim manual). ParalajmĂ«rimi kontrollon qĂ« parametrat hyrĂ«s dhe dalĂ«s tĂ« funksionit pĂ«rkasin tĂ« njĂ«jtĂ«s grup tipash. Grupet formohen nĂ« bazĂ« tĂ« mbĂ«shtetjes pĂ«r caktimin e qartĂ« tĂ« kohĂ«s sĂ« jetĂ«s dhe mundĂ«sisĂ« pĂ«r nxjerrjen automatik tĂ« kohĂ«s sĂ« jetĂ«s nga kompajleri (p.sh., nĂ« tipet «&âa T» dhe «ContainsLifetime» mund tĂ« jetĂ« e pranishme koha e jetĂ«s, por kompajleri nuk mund ta pĂ«rcaktojĂ« automatikisht kohĂ«n e jetĂ«s, ndĂ«rsa nĂ« tipet «&T», «&â_ T» dhe «ContainsLifetime» lejohet si caktim i qartĂ«, ashtu edhe pĂ«rcaktim automatik).
- Në atributin «target_feature» për sistemet x86 është realizuar mundësia për të verifikuar mbështetje për grupe të përmirësuara të instruksioneve sha512, sm3, sm4, kl dhe widekl, si dhe funksione të veçanta avx512. #[target_feature(enable = «avx512bw»)] pub fn cool_simd_code(/* .. */) -> /* ⊠*/ { /* ⊠*/ }
- ĂshtĂ« siguruar ekzekutimi i doctest (teste tĂ« inkorporuara nĂ« dokumentacion) jo vetĂ«m pĂ«r platformĂ«n e tanishme tĂ« synuar, por edhe pĂ«r platforma tĂ« tjera tĂ« caktuara gjatĂ« ekzekutimit tĂ« menaxherit tĂ« paketave «cargo» («cargo test âdoc âtarget other_target»).
- PĂ«r funksionet âextern «C»â gjatĂ« pĂ«rpilimit pĂ«r platformĂ«n e synuar «wasm32-unknown-unknown» Ă«shtĂ« realizuar ABI standard C pĂ«r WebAssembly.
- Me disa rezervave që lidhen me pajtueshmërinë e tipeve, përdorimi i tipeve i128 dhe u128 është i lejuar në funksionet e jashtme C (extern «C»), për të cilat më parë është treguar një paralajmërim lint «improper_ctypes_definitions».
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- Shumë funksione të ndërtuara në kompilator për procesorët x86, duke përfshirë funksionet për AVX512, SHA512, SM3 dhe SM4.
- NonZero
- File::lock
- File::lock_shared
- File::try_lock
- File::try_lock_shared
- File::unlock
- NonNull::from_ref
- NonNull::from_mut
- NonNull::without_provenance
- NonNull::with_exposed_provenance
- NonNull::expose_provenance
- OsString::leak
- PathBuf::leak
- Result::flatten
- std::os::linux::net::TcpStreamExt::quickack
- std::os::linux::net::TcpStreamExt::set_quickack
Priznaku «const» aplicohet në funksione:
- ::as_mut_slice
- ::eq_ignore_ascii_case
- str::eq_ignore_ascii_case
- Procesi i transferimit tĂ« platformĂ«s target «x86_64-apple-darwin» ka filluar nga niveli i parĂ« i mbĂ«shtetjes nĂ« tĂ« dytin (Apple planifikon tĂ« ndalojĂ« mbĂ«shtetje pĂ«r arkitekturĂ«n x86_64). Niveli i parĂ« i mbĂ«shtetjes pĂ«rfshin krijimin e ndĂ«rtimeve binarĂ«, kryerjen e testimeve tĂ« plota dhe ofrimin e garancisĂ« mĂ« tĂ« lartĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n â çdo ndryshim nĂ« kompilator verifikohet duke kryer njĂ« set tĂ« plotĂ« testesh. Niveli i dytĂ« i mbĂ«shtetjes pĂ«rfshin garancinĂ« e ndĂ«rtimit, por pa garanci gjatĂ« kalimit tĂ« setit tĂ« testimeve.
- ĂshtĂ« implementuar niveli i tretĂ« i mbĂ«shtetjes pĂ«r platformat «loongarch32-unknown-none» dhe «loongarch32-unknown-none-softfloat». Niveli i tretĂ« parashikon mbĂ«shtetje bazike, por pa testim tĂ« automatizuar, publikimin e ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« sĂ« ndĂ«rtimit tĂ« kodit.
Së tambahan, mund të përmenden ngjarjet dhe projektet lidhur me Rust:
- ĂshtĂ« publikuar njĂ« raport mbi gjendjen e paketave nĂ« gjuhĂ«n Rust nĂ« Debian. ĂshtĂ« vĂ«nĂ« re se nĂ« degĂ«n Debian Unstable (Sid) rreth 8% e pakteve src nĂ« depozitĂ«n main kanĂ« lidhje me varĂ«si ndĂ«rtimi me tĂ« paktĂ«n njĂ« paketĂ« «librust-*». NĂ« Debian 12 kishte 4.5% tĂ« tillĂ«. Po ashtu Ă«shtĂ« vĂ«nĂ« re se mĂ« shumĂ« se 3 mijĂ« paketa pĂ«rfshijnĂ« kod nĂ« gjuhĂ«n Rust, tĂ« nxjerra nĂ« paketa librust-..-dev, dhe 150 src-pakete ofrojnĂ« skedarĂ« ekzekutivĂ« ose libra tĂ« kompiluar nĂ« Rust.
Nga paketat e interesit për Debian përmenden sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d dhe fish. Mbështetje opsionale për Rust është realizuar në APT, QEMU (virtiofsd), bërthama Linux dhe Mesa, dhe pritet gjithashtu në LibreOffice. Për transformimin e paketave crate në paketa src Debian është realizuar një mjet debcargo.
- ĂshtĂ« paraqitur projekti tmux-rs, qĂ« zhvillon njĂ« klon tĂ« shumĂ«zuesit tĂ« terminalit tmux (menaxheri i dritareve nĂ« konsolĂ«), i shkruar nga C nĂ« Rust.
- Zhvilluesi i drejtorit Tyr nga kompania Collabora, publikoi një artikull mbi pajisjet që punojnë në nivelin e bërthamës së drejtorëve për GPU-të dhe parimet e zhvillimit të atyre drejtorëve në gjuhën Rust.
- U demonstruar një aplikacion universalisht në gjuhën Rust, i cili mund të ekzekutohet si në CPU ashtu edhe në platforma të ndryshme GPU: CUDA për NVIDIA, SPIR-V për GPU-të që mbështetin Vulkan, Metal për Apple, DirectX 12 për Windows, WebGPU për shfletuesit.
Burimi: opennet.ru
