Publikohet Rust 1.89. Rreth 8% e paketave src në Debian Sid varen nga Rust

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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster