Vydanie Rust 1.89. Približne 8% src-balíkov v Debian Sid je založených na Rust

Bol vydaný release programovacieho jazyka Rust 1.89, ktorý založil projekt Mozilla, ale teraz sa rozvíja pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečné spravovanie pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelizácie vykonávania úloh, pritom sa zaobíde bez použitia garbage collectora a runtime (runtime sa znižuje na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy práce s pamäťou v Rust zbavujú vývojára chýb pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú z nízkoúrovňovej práce s pamäťou, ako je prístup do oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, prekročenie hraníc bufra atď. Na distribúciu knižníc, zabezpečenie zostavy a správu závislostí sa vyvíja balíčkový manažér Cargo. Pre umiestnenie knižníc sa podporuje repozitár crates.io.

Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené už pri kompilácii prostredníctvom kontroly odkazov, sledovania vlastníctva objektov, zohľadňovania životnosti objektov (rozsah viditeľnosti) a posudzovania správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred celočíselnými pretečeniami, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolené a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Hlavné novinky:

  • Bola poskytnutá možnosť používať znak „_“ ako argument generických parametrov s označením „const“ na odvodenie hodnôt týchto parametrov na základe okolia. pub fn all_false() -> [bool; LEN] { [false; _] }
  • Pridalo sa nové lint upozornenie „mismatched_lifetime_syntaxes“ na riešenie problému nejednoznačného určovania životnosti v podpisoch funkcií pri použití mechanizmu „lifetime elision“ (automaticky určuje dobu života odkazov, čo umožňuje obísť jeho ručné uvádzanie). Upozornenie vykonáva kontrolu, že vstupné a výstupné parametre funkcie patria do rovnakej skupiny typov. Skupiny sú vytvárané na základe podpory explicitného určenia doby života a možnosti automatického odvodenia doby života kompilátorom (napríklad v typoch „&’a T“ a „ContainsLifetime“ môže byť explicitne prítomná doba života, ale kompilátor nemôže automaticky určiť dobu života, zatiaľ čo v typoch „&T“, „&’_ T“ a „ContainsLifetime“ je povolené ako explicitné určenie, tak aj automatické určenie).
  • V atribúte „target_feature“ pre systémy x86 bola implementovaná možnosť kontroly podpory rozšírených inštrukčných súprav sha512, sm3, sm4, kl a widekl, ako aj jednotlivých funkcií avx512. #[target_feature(enable = „avx512bw“)] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */ }
  • Zabezpečené spustenie doctest (testy zabudované do dokumentácie) nielen pre aktuálnu cieľovú platformu, ale aj pre iné platformy uvedené pri spúšťaní balíkového manažéra „cargo“ („cargo test --doc --target other_target“).
  • Pre funkcie ‘extern „C“‘ pri kompilácii pre cieľovú platformu „wasm32-unknown-unknown“ bol implementovaný štandardný C ABI pre WebAssembly.
  • S niektorými výhradami týkajúcimi sa kompatibility typov je povolené používanie typov i128 a u128 vo vonkajších C funkciách (extern "C"), pre ktoré sa predtým zobrazilo varovanie lint „improper_ctypes_definitions“.
  • Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
    • Mnohé vstavané funkcie v kompilátore (Intrinsics) pre procesory x86, vrátane funkcií pre AVX512, SHA512, SM3 a 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

    Príznak „const“ bol použitý v funkciách:

    • ::as_mut_slice
    • ::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Začal sa proces prechodu cieľovej platformy „x86_64-apple-darwin“ z prvého stupňa podpory na druhý (Apple plánuje ukončiť podporu architektúry x86_64). Prvý stupeň podpory predpokladá vytváranie binárnych zostavení, dôkladné testovanie a poskytovanie najvyššej záruky podpory platformy – každá zmena v kompilátore sa overuje vykonaním celého testovacieho súboru. Druhý stupeň podpory predpokladá záruku zostavenia, ale bez záruk pri prechode testovacím súborom.
  • Bol implementovaný tretí stupeň podpory platforiem „loongarch32-unknown-none“ a „loongarch32-unknown-none-softfloat“. Tretí stupeň predpokladá základnú podporu, ale bez automatizovaného testovania, publikácie oficiálnych zostavení a overenia možnosti zostavenia kódu.

Ďalej je možné spomenúť súvisiace udalosti a projekty s Rustom:

  • Bola zverejnená správa o stave balíkov v jazyku Rust v Debian. Uvádza sa, že vo vetve Debian Unstable (Sid) približne 8% src-balení v repozitári main je spojených so závislosťami na zostavenie s minimálne jedným balíkom „librust-*“. V Debiane 12 bolo podobných balíkov 4,5%. Tiež bolo poznamenané, že viac ako 3 tisíc balíkov obsahuje kód v jazyku Rust, ktorý bol presunutý do balíkov librust-..-dev, a 150 src-balení dodáva skompilované spustiteľné súbory alebo knižnice Rust.

    Medzi zaujímavé balíky pre Debian patrí sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d a fish. Voliteľná podpora Rustu bola implementovaná v APT, QEMU (virtiofsd), jadre Linuxu a Mesa, a taktiež sa očakáva v LibreOffice. Na prevod crate-balení na src-balenia Debian bol vyvinutý nástroj debcargo.

  • Bol predstavený projekt tmux-rs, ktorý rozvíja klon multiplexora terminálu tmux (konzolový správca okien), prepisovaný z C na Rust.
  • Vývojár ovládača Tyr z spoločnosti Collabora zverejnil článok o zariadeniach pracujúcich na úrovni jadra ovládačov pre GPU a princípoch vývoja takýchto ovládačov v jazyku Rust.
  • Bol demonštrovaný univerzálny aplikácia v jazyku Rust, schopná bežať ako na CPU, tak aj na rôznych GPU platformách: CUDA pre NVIDIA, SPIR-V pre GPU s podporou Vulkan, Metal pre Apple, DirectX 12 pre Windows, WebGPU pre prehľadávače.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster