Izdanje Rust 1.95. Dodavanje Rusta u poslužiteljski sustav Mir. Analizator prometa ayaFlow na Rustu

Objavljen je izlaz programskog jezika Rust 1.95, koji se prvotno razvijao pod pokroviteljstvom Mozille, a sada ga razvija neovisna neprofitna organizacija Rust Foundation. Jezik se fokusira na sigurnu manipulaciju memorijom i pruža sredstva za postizanje visokog paralelizma u izvršenju zadataka, dok izbjegava korištenje sakupljača smeća i runtimea (runtime se svodi na osnovnu inicijalizaciju i podršku standardnoj biblioteci).

Metode upravljanja memorijom u Rust-u usmjerene su na isključivanje grešaka prilikom manipulacije pokazivačima i zaštitu od problema koji nastaju zbog niskonivojskog rada s memorijom, kao što su pristupanje memorijskom području nakon što je oslobođeno, dereferenciranje nultih pokazivača, izlazak iz okvira bafera itd. Za distribuciju biblioteka, osiguranje gradnje i upravljanje ovisnostima, projekt se razvija preko upravitelja paketa Cargo. Za hosting biblioteka podržava se repozitorij crates.io.

Sigurna manipulacija memorijom osigurava se u Rustu tijekom kompilacije provjerom referenci, praćenjem vlasništva nad objektima, uzimanjem u obzir vremena života objekata (opseg vidljivosti) i ocjenom točnosti pristupa memoriji tijekom izvršavanja koda. Rust također pruža sredstva za zaštitu od cjelobrojnih prekoračenja, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabla kao zadano te nudi snažnu statičku tipizaciju za minimiziranje logičkih grešaka.

Glavne novine:

  • Dodana je makro funkcija "cfg_select!" koja se može koristiti umjesto paketa "cfg-if" za obradu više uvjeta kompilacije u stilu "match" blokova, bez definiranja lanca uvjetnih izraza pomoću konstrukcije "#[cfg]". cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* ne-unix, 32-bit */ } } _ => { fn foo() { /* ne unix i ne 32-bit */ } } }
  • Stabilizirana je mogućnost korištenja izraza "if let" unutar "match" blokova za stvaranje uvjetnih obrasca. Ranije je podrška za navođenje više izraza "let" korištenjem operatora "&&" stabilizirana za "if" i "while" blokove. match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • Stabilizirana je podrška za inline assembler za PowerPC i PowerPC64 arhitekture.
  • U stabilne verzije prebačen je novi set API-ja, uključujući stabilizirane metode i implementacije tipa:
    • 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
  • Znak "const" primijenjen je u funkcijama:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • U stabilnim verzijama alata ukinuta je podrška za prenošenje specifikacija vlastitih ciljanih platformi compileru.
  • Ciljane platforme powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos i aarch64-apple-visionos-sim su prebačene na drugi nivo podrške, što podrazumijeva garanciju izrade, ali bez garancija prilikom prolaska testnog skupa.

Dodatno se mogu istaknuti nedavno najavljeni projekti i događaji vezani za Rust:

  • Tvrtka Canonical je predstavila prikazni poslužitelj Mir 2.26, koji pruža skup biblioteka za izradu kompozitnih poslužitelja na bazi protokola Wayland i uključuje standardnu funkcionalnost upravitelja prozora i prikaznih poslužitelja. Mir je korišten u projektima kao što su kompozitni upravitelj Miracle, sučelje za internet kioske Ubuntu Frame i korisničko okruženje Miriway.

    Nova verzija se ističe dodavanjem mogućnosti razvoja komponenti na jeziku Rust. Na Rust-u je realizirana alternativna podsustava upravljanja unosom evdev-rs, a započet je rad na frontend-u wayland-rs napisanom na Rust-u za Wayland. Od promjena koje nisu povezane s Rust-om, u Mir-u je zabilježena podrška za Wayland protokole ext_image_copy_capture_v1 i input-triggers.

  • Objavljen je prvi izdanak analizatora prometa ayaFlow, napisanog na Rust-u i koristeći sustav jezgre Linux eBPF za presretanje mrežnih paketa (IPv4/TCP/UDP) i Ethernet okvira s minimalnim utjecajem na performanse. Podržano je duboko inspekcijsko protokola razine aplikacija (L7), poput izdvajanja TLS SNI i DNS upita prilikom analize šifriranog prometa. Sustav podržava vođenje tablice sa trenutnim stanjem veza u formatu DashMap, pohranu povijesti u SQLite i pružanje statistike putem REST API-ja za Prometheus.
  • Implementirana je mogućnost izrade višedretvenih aplikacija na jeziku Rust, koje koriste funkcije std::thread i izvođenja na strani GPU-a.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster