Vydanie Rust 1.95. Pridanie Rustu do zobrazovacieho servera Mir. Analyzátor prenosu ayaFlow na Rust.

Bol spustený jazyk programovania Rust 1.95, pôvodne založený projektom Mozilla, avšak v súčasnosti rozvíjaný pod ochranou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnú manipuláciu s pamäťou a poskytuje prostriedky na dosahovanie vysokého paralelizmu vykonávania úloh, pričom sa zaobíde bez použitia garbage collectora a runtime (runtime sa obmedzuje na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy práce s pamäťou v Rust sú zamerané na vylúčenie chýb pri manipulácii s ukazovateľmi a ochranu pred problémami vyplývajúcimi z nízkoúrovňovej práce s pamäťou, ako sú prístup k pamäťovým oblastiam po ich uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie buffera a podobne. Na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí sa vyvíja balíkový manažér Cargo. Na hostenie 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:

  • Bol pridaný makro „cfg_select!“, ktorý sa môže používať namiesto balíka „cfg-if“ na spracovanie viacerých podmienok kompilácie v štýle bloku „match“, bez nutnosti definovať reťazec podmienkových výrazov s konštrukciou „#[cfg]“. cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* ne-unix, 32-bit */ } } _ => { fn foo() { /* nie unix a nie 32-bit */ } } }
  • Stabilizovala sa možnosť uvádzať výrazy „if let“ vo vnútri blokov „match“ na vytváranie podmienečných zrovnaní podľa vzoru. Predtým bola stabilizovaná podpora uvedenia viacerých výrazov „let“ pomocou operátora „&&“ pre bloky „if“ a „while“. match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • Stabilizovala sa podpora inline assembleru pre architektúry PowerPC a PowerPC64.
  • Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
    • MaybeUninit: From<[MaybeUninit; N]>
    • MaybeUninit: AsRef<[MaybeUninit; N]>
    • MaybeUninit: AsRef<[MaybeUninit]>
    • MaybeUninit: AsMut<[MaybeUninit; N]>
    • MaybeUninit: AsMut<[MaybeUninit]>
    • [MaybeUninit; N]: From<MaybeUninit>
    • Cell: AsRef<[Cell; N]>
    • Cell: AsRef<[Cell]>
    • Cell: AsRef<[Cell]>
    • bool: TryFrom
    • AtomicPtr::update
    • AtomicPtr::try_update
    • AtomicBool::update
    • AtomicBool::try_update
    • AtomicIn::update
    • AtomicIn::try_update
    • AtomicUn::update
    • AtomicUn::try_update
    • cfg_select!
    • mod core::range
    • core::range::RangeInclusive
    • core::range::RangeInclusiveIter
    • core::hint::cold_path
    • ::as_ref_unchecked
    • ::as_ref_unchecked
    • ::as_mut_unchecked
    • Vec::push_mut
    • Vec::insert_mut
    • VecDeque::push_front_mut
    • VecDeque::push_back_mut
    • VecDeque::insert_mut
    • LinkedList::push_front_mut
    • LinkedList::push_back_mut
    • Layout::dangling_ptr
    • Layout::repeat
    • Layout::repeat_packed
    • Layout::extend_packed
  • Príznak „const“ bol použitý v funkciách:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • V stabilných verziách nástroja bola odstránená podpora prenosu špecifikácií vlastných cieľových platforiem k kompilátoru.
  • Cieľové platformy powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos a aarch64-apple-visionos-sim boli prevedené na druhú úroveň podpory, ktorá predpokladá záruku zostavenia, ale bez záruk pri prechode testovacím balíkom.

Dodatočne môžeme spomenúť nedávno oznámené projekty a udalosti týkajúce sa Rust:

  • Spoločnosť Canonical predstavila displejový server Mir 2.26, ktorý poskytuje súbor knižníc na vytváranie kompozitných serverov na báze protokolu Wayland a zahŕňajúci typovú funkcionalitu správcov okien a displejových serverov. Mir je zapojený do takých projektov, ako sú kompozitný správca Miracle, shell pre internetové kiosky Ubuntu Frame a používateľské prostredie Miriway.

    Nové vydanie je pozoruhodné pridaním možnosti vývoja komponentov v jazyku Rust. V Rust je realizovaný alternatívny subsystém správy vstupu evdev-rs a bola zahájená práca na frontende wayland-rs pre Wayland napísanom v Rust. Z nie nesúvisiacich so Rust zmenách bolo v Mire zaznamenané podporovanie protokolov Wayland ext_image_copy_capture_v1 a input-triggers.

  • Bol vydaný prvý release analyzátora prevádzky ayaFlow, napísaného v Rust a využívajúceho subsystém jadra Linux eBPF na zachytávanie sieťových paketov (IPv4/TCP/UDP) a rámcov Ethernet s minimálnym vplyvom na výkon. Podporuje hĺbkovú inšpekciu protokolov aplikačnej úrovne (L7), ako je extrakcia TLS SNI a DNS dotazov pri analýze šifrovanej prevádzky. Systém podporuje vedenie tabuľky s aktuálnym stavom spojení vo formáte DashMap, ukladanie histórie v SQLite a poskytovanie štatistiky cez REST API pre Prometheus.
  • Realizovaná bola možnosť vytvárania viacosových aplikácií v jazyku Rust, ktoré využívajú funkcie std::thread a vykonávajú sa na strane GPU.

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