Lëshimi i Rust 1.89. Rreth 8% e pakove src në Debian Sid janë të varura nga Rust.

ËshtĂ« botuar lĂ«shimi i gjuhĂ«s sĂ« programimit Rust 1.89, e cila Ă«shtĂ« zhvilluar fillimisht nga projekti Mozilla, por tani zhvillohet nĂ«n mbikĂ«qyrjen e njĂ« organizate tĂ« pavarur dhe jo fitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« punimin e sigurt me kujtesĂ«n dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizm tĂ« lartĂ« nĂ« kryerjen e detyrave, pa pĂ«rdorur mbledhĂ«sin e plehrave dhe kohĂ«n e ekzekutimit (koha e ekzekutimit 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Ă« ofruar mundĂ«sia e pĂ«rdorimit tĂ« simbolit «_» si argument i parametrave tĂ« pĂ«rgjithshĂ«m me emĂ«rtimin «const» pĂ«r pĂ«rllogaritjen e vlerave tĂ« kĂ«tyre parametrave nĂ« bazĂ« tĂ« kontekstit pĂ«rkatĂ«s. pub fn all_false<const LEN: usize>() -> [bool; LEN] { [false; _] }
  • ËshtĂ« shtuar njĂ« paralajmĂ«rim tĂ« ri lint-i «mismatched_lifetime_syntaxes» pĂ«r zgjidhjen e problemit tĂ« pĂ«rcaktimit tĂ« jashtĂ«zakonshĂ«m tĂ« jetĂ«s nĂ« nĂ«nshkrimet e funksioneve kur pĂ«rdoret mekanizmi i «lifetime elision» (identifikon automatikisht jetĂ«n e referenceve, duke lejuar qĂ« tĂ« shmanget pĂ«rcaktimi i saj manual). ParalajmĂ«rimi kontrollon qĂ« parametrat hyrĂ«s dhe dalĂ«s tĂ« funksionit t'i pĂ«rkasin tĂ« njĂ«jtit grup tĂ« tipeve. Grupi formohet nĂ« bazĂ« tĂ« mbĂ«shtetjes pĂ«r pĂ«rcaktimin e qartĂ« tĂ« jetĂ«s dhe mundĂ«sisĂ« pĂ«r pĂ«rllogaritjen automatike tĂ« saj nga kompajleri (p.sh., nĂ« tipet «&’a T» dhe «ContainsLifetime<‘a>» mund tĂ« jetĂ« e pranishme njĂ« jetĂ« e qartĂ«, por kompajleri nuk mund ta pĂ«rllogarisĂ« atĂ« automatikisht, ndĂ«rsa nĂ« tipet «&T», «&’_ T» dhe «ContainsLifetime<‘_>» lejohet si pĂ«rcaktim i qartĂ« ashtu edhe pĂ«rcaktim automatik).
  • NĂ« atributin «target_feature» pĂ«r sistemet x86 Ă«shtĂ« implementuar mundĂ«sia e verifikimit tĂ« mbĂ«shtetjes pĂ«r grupe tĂ« avancuara instruksionesh 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Ă« integruara nĂ« dokumentacion) jo vetĂ«m pĂ«r platformĂ«n aktuale mĂ« tĂ« njohur, por edhe pĂ«r platforma tĂ« tjera qĂ« janĂ« pĂ«rcaktuar gjatĂ« fillimit tĂ« menaxherit tĂ« paketave «cargo» («cargo test —doc —target other_target»).
  • PĂ«r funksionet ‘extern «C»‘ gjatĂ« ndĂ«rtimit pĂ«r platformĂ«n e caktuar «wasm32-unknown-unknown» Ă«shtĂ« implementuar standardi C ABI pĂ«r WebAssembly.
  • Me disa pĂ«rjashtime, nĂ« lidhje me kompatibilitetin e tipeve, Ă«shtĂ« lejuar pĂ«rdorimi i tipeve i128 dhe u128 nĂ« funksionet e jashtme C (extern «C»), pĂ«r tĂ« cilat mĂ« parĂ« ishte paraqitur paralajmĂ«rimi lint «improper_ctypes_definitions».
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • ShumĂ« funksione tĂ« integruara nĂ« kompajler (Intrinsics) pĂ«r procesorĂ«t x86, duke pĂ«rfshirĂ« funksionet pĂ«r AVX512, SHA512, SM3 dhe SM4.
    • NonZero<char>
    • 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

    T symboli «const» është aplikuar në funksionet:

    • <[T; N]>::as_mut_slice
    • <[u8]>::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Ka filluar procesi i kalimit tĂ« platformĂ«s sĂ« synuar «x86_64-apple-darwin» nga niveli i parĂ« i mbĂ«shtetjes nĂ« tĂ« dytin (Apple planifikon tĂ« ndalĂ« mbĂ«shtetje pĂ«r arkitekturĂ«n x86_64). Niveli i parĂ« i mbĂ«shtetjes pĂ«rfshin formimin e grumbujve binarĂ«, kryerjen e testeve tĂ« hollĂ«sishme dhe ofrimin e garantimit mĂ« tĂ« lartĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n — çdo ndryshim nĂ« kompajler kontrollohet pĂ«rmes ekzekutimit tĂ« njĂ« kompleti tĂ« plotĂ« tĂ« testeve. Niveli i dytĂ« i mbĂ«shtetjes pĂ«rfshin garantimin e ndĂ«rtimit, por pa garantim nĂ« kalimin e testit.
  • ËshtĂ« realizuar niveli i tretĂ« i mbĂ«shtetjes pĂ«r platformat «loongarch32-unknown-none» dhe «loongarch32-unknown-none-softfloat». Niveli i tretĂ« pĂ«rfshin mbĂ«shtetje bazĂ«, por pa testim automatizuar, publikim tĂ« grumbujve tĂ« zyrtarizuar dhe verifikimin e mundĂ«sisĂ« pĂ«r ndĂ«rtimin e kodit.

Përveç kësaj, mund të theksohen ngjarjet dhe projektet e lidhura me Rust:

  • ËshtĂ« botuar njĂ« raport mbi gjendjen e paketave nĂ« gjuhĂ«n Rust nĂ« Debian. VĂ«rehet se nĂ« degĂ«n Debian Unstable (Sid) rreth 8% e paketimeve src nĂ« depozitin kryesor janĂ« tĂ« lidhura me varĂ«si ndĂ«rtimi me tĂ« paktĂ«n njĂ« paketĂ« «librust-*». NĂ« Debian 12, paketa tĂ« tilla pĂ«rbĂ«nin 4.5%. Gjithashtu Ă«shtĂ« vĂ«nĂ« re se mĂ« shumĂ« se 3,000 paketa pĂ«rfshijnĂ« kod nĂ« gjuhĂ«n Rust, i ndarĂ« nĂ« paketat librust-..-dev, dhe 150 paketat src ofrojnĂ« skedarĂ« ekzekutivĂ« ose biblioteka Rust tĂ« kompiluar.

    Nga paketat interesante për Debian janë përmendur 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ërthamën Linux dhe Mesa, si dhe pritet në LibreOffice. Për transformimin e paketave crate në paketa src të Debian është implementuar një mjet debcargo.

  • ËshtĂ« prezantuar projekti tmux-rs, i cili zhvillon njĂ« klon tĂ« shumĂ«zuesit tĂ« terminalit tmux (menaxher dritareje tĂ« konsolĂ«s), i riparuar nga C nĂ« Rust.
  • Zhvilluesi i drejtorit Tyr nga kompania Collabora, publikoi njĂ« artikull mbi pajisjet qĂ« punojnĂ« nĂ« nivele tĂ« drejtorĂ«ve tĂ« kernelit dhe parimet e zhvillimit tĂ« tillĂ« tĂ« drejtorĂ«ve nĂ« gjuhĂ«n Rust.
  • ËshtĂ« demonstruar njĂ« aplikacion universale 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 me mbĂ«shtetje Vulkan, Metal pĂ«r Apple, DirectX 12 pĂ«r Windows, WebGPU pĂ«r shfletuesit.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster