Rust 1.95 Release. Pagdugang sa Rust sa Mir display server. AyaFlow traffic analyzer sa Rust.

Ang Rust 1.95 programming language, nga gitukod sa Mozilla nga proyekto apan karon naugmad ubos sa pagdumala sa independenteng non-profit nga Rust Foundation, gipagawas na. Ang lengguwahe nagtutok sa kaluwasan sa panumduman ug naghatag og mga himan alang sa pagkab-ot sa taas nga parallelism sa pagpatuman sa buluhaton, samtang nagbuhat nga walay paggamit sa usa ka garbage collector ug runtime (ang runtime gikunhoran ngadto sa basic initialization ug maintenance sa standard library).

Ang mga pamaagi sa pagdumala sa memorya sa Rust gidisenyo aron mawagtang ang mga sayop sa manipulasyon sa pointer ug mapanalipdan batok sa mga isyu nga motumaw gikan sa ubos nga lebel sa pagdumala sa memorya, sama sa pag-access sa memorya human kini ma-free, pag-dereferencing sa mga null pointer, buffer overruns, ug uban pa. Ang proyekto nagpalambo sa Cargo package manager aron ipang-apod-apod ang mga librarya, mapadali ang mga build, ug madumala ang mga dependency. Ang crates.io repository gimentinar alang sa pag-host sa mga librarya.

Ang kaluwasan sa panumduman gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa reference, pagsubay sa pagpanag-iya sa butang, pagsubay sa mga kinabuhi sa butang (scopes), ug pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Panguna nga mga inobasyon:

  • Gidugang ang "cfg_select!" macro, nga magamit imbes sa "cfg-if" package aron pagdumala sa daghang mga kondisyon sa compilation sa estilo sa usa ka "match" block, nga wala magtino sa usa ka kadena sa mga conditional gamit ang "#[cfg]" construct. cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* non-unix, 32-bit */ } } _ => { fn foo() { /* not unix and not 32-bit */ } } }
  • Ang abilidad sa pagtino sa mga ekspresyon nga "if let" sulod sa mga bloke nga "match" aron makahimo og conditional pattern matching napalig-on na. Kaniadto, ang suporta alang sa pagtino sa daghang mga ekspresyon nga "let" gamit ang operator nga "&&" napalig-on na alang sa mga bloke nga "if" ug "while". match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • Gipalig-on nga suporta sa inline assembler para sa mga arkitektura sa PowerPC ug PowerPC64.
  • Usa ka bag-ong bahin sa API ang gibalhin sa kategorya nga stable, lakip ang mga pamaagi ug pagpatuman sa mga kinaiya nga na-stabilize:
    • MaybeUninit<[T; N]>: Gikan sa<[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit ]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit ]>
    • [BasinUnit ; N]: Gikan sa
    • Selyula<[T; N]>: AsRef<[Selyula ; N]>
    • Selyula<[T; N]>: AsRef<[Selyula ]>
    • Selula<[T]>: AsRef<[Selyula ]>
    • bool: Sulayi Gikan<{integer}>
    • 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
    • kinauyokan::range::RangeInclusive
    • kinauyokan::range::RangeInclusiveIter
    • kinauyokan::hint::cold_path
    • <*const T>::as_ref_wala masusi
    • <*mut T>::as_ref_wala masusi
    • <*mut T>::as_mut_wala masusi
    • 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
  • Ang "const" nga timaan gigamit sa mga gimbuhaton:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • Sa stable nga mga bersyon sa toolchain, ang suporta para sa pagpasa sa mga native target platform specifications ngadto sa compiler gitangtang na.
  • Ang mga target nga plataporma nga powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos, ug aarch64-apple-visionos-sim gibalhin na ngadto sa support level 2, nga naglakip sa build guarantee apan walay test suite pass guarantee.

Dugang pa, gusto namong ipasiugda ang bag-o lang gipahibalo nga mga proyekto ug mga kalihokan nga may kalabotan sa Rust:

  • Gipaila sa Canonical ang Mir 2.26 display server, nga naghatag og hugpong sa mga librarya para sa paghimo og mga composite nga imahe. mga server Base sa Wayland protocol ug sa paggamit sa tipikal nga gamit sa mga window manager ug display server, ang Mir gigamit sa mga proyekto sama sa Miracle compositing manager, usa ka web kiosk shell, ug Ubuntu Palibot sa tiggamit sa Frame ug Miriway.

    Ang bag-ong release nailhan tungod sa pagdugang sa abilidad sa pagpalambo sa mga component sa Rust. Usa ka alternatibong input management subsystem, ang evdev-rs, ang gipatuman na sa Rust, ug ang trabaho nagsugod na sa usa ka Rust-based frontend, ang wayland-rs, para sa Wayland. Ang mga pagbag-o nga wala’y kalabotan sa Rust sa Mir naglakip sa suporta para sa mga protocol sa Wayland nga ext_image_copy_capture_v1 ug input-triggers.

  • Ang unang pagpagawas sa ayaFlow traffic analyzer, nga gisulat sa Rust ug gigamit ang kernel subsystem, gipatik na. Linux Ang eBPF para sa pag-intercept sa mga network packet (IPv4/TCP/UDP) ug mga Ethernet frame nga adunay gamay nga epekto sa performance. Gisuportahan niini ang lawom nga inspeksyon sa mga application-layer (L7) protocol, sama sa pagkuha sa mga TLS SNI ug DNS query sa pag-analisar sa naka-encrypt nga trapiko. Ang sistema nagmintinar sa usa ka talaan sa kasamtangang estado sa koneksyon sa DashMap format, nagtipig sa kasaysayan sa SQLite, ug nagbalik sa mga estadistika pinaagi sa usa ka REST API ngadto sa Prometheus.
  • Ang abilidad sa paghimo og mga multithreaded nga aplikasyon sa Rust nga pinulongan gamit ang std::thread functions ug gipatuman sa GPU nga bahin napatuman na.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster