Lëshimi i Rust 1.95. Shtimi i Rust në serverin e ekranit Mir. Analizatori i trafikut ayaFlow në Rust

ËshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.95, i zhvilluar fillimisht nga projekti Mozilla, por tani nĂ« zhvillim e sipĂ«r nĂ«n mbĂ«shtetje tĂ« OrganizatĂ«s jo-fitimprurĂ«se Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e menaxhimit tĂ« memorjes dhe ofron mjete pĂ«r arritjen e njĂ« paralelizmi tĂ« lartĂ« nĂ« ekzekutimin e detyrave, pa pĂ«rdorur mbledhĂ«s mbetjeve dhe runtime (runtime reduktohet nĂ« inicializimin bazik dhe mbĂ«shtetje tĂ« bibliotekĂ«s standarde).

Metodat e punës me memorien në Rust kanë si objektiv të ekskludojnë gabimet gjatë manipulimit të treguesve dhe të mbrojnë nga problemet që lindin për shkak të punës me memorien në nivel të ulët, siç janë qasja në hapësirën e memories pas çlirimit të saj, dereferencimi i treguesve zero, dalja jashtë kufijve të tamponit, etj. Për shpërndarjen e librarive, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të librarive, mbahet repozitori crates.io.

Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

TĂ« rejat kryesore:

  • ËshtĂ« shtuar makroja «cfg_select!», e cila mund tĂ« pĂ«rdoret si njĂ« zĂ«vendĂ«sim pĂ«r paketĂ«n «cfg-if» pĂ«r trajtimin e disa kushteve tĂ« kompilimit nĂ« stilin e bllokut «match», pa pĂ«rcaktuar njĂ« zinxhir tĂ« shprehjeve kushtore me konstruktionen «#[cfg]». cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = «32» => { fn foo() { /* jo-unix, 32-bit */ } } _ => { fn foo() { /* jo unix dhe jo 32-bit */ } } }
  • ËshtĂ« stabilizuar mundĂ«sia e pĂ«rdorimit tĂ« shprehjeve «if let» brenda blloqeve «match» pĂ«r tĂ« krijuar pĂ«rputhje kushtore sipas modelit. MĂ« parĂ« ishte stabilizuar mbĂ«shtetje pĂ«r pĂ«rcaktimin e disa shprehjeve «let» duke pĂ«rdorur operatorin «&&» pĂ«r blloqet «if» dhe «while». match value { Some(x) if let Ok(y) = compute(x) => { println!(«{}, {}», x, y); } _ => {} }
  • ËshtĂ« stabilizuar mbĂ«shtetja pĂ«r asamble inline pĂ«r arkitat PowerPC dhe PowerPC64.
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>
    • [MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>
    • Cell<[T; N]>: AsRef<[Cell<T>; N]>
    • Cell<[T; N]>: AsRef<[Cell<T>]>
    • Cell<[T]>: AsRef<[Cell<T>]>
    • bool: TryFrom<{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
    • core::range::RangeInclusive
    • core::range::RangeInclusiveIter
    • core::hint::cold_path
    • <*const T>::as_ref_unchecked
    • <*mut T>::as_ref_unchecked
    • <*mut T>::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
  • T symboli «const» Ă«shtĂ« aplikuar nĂ« funksionet:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • NĂ« versionet e stabilizuara tĂ« mjetit Ă«shtĂ« hequr mbĂ«shtetja pĂ«r dĂ«rgimin e specifikimeve tĂ« platformave tĂ« synuara te kompajleri.
  • Platformat e synuara powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos dhe aarch64-apple-visionos-sim janĂ« kaluar nĂ« nivelin e dytĂ« tĂ« mbĂ«shtetjes, i cili pĂ«rfshin garancinĂ« pĂ«r ndĂ«rtimin, por pa garanci gjatĂ« kalimit tĂ« paketĂ«s sĂ« testeve.

Gjithashtu, mund të theksojmë projektet dhe ngjarjet e sapo shpallura që lidhen me Rust:

  • Kompania Canonical ka prezantuar serverin e shfaqjes Mir 2.26, qĂ« ofron njĂ« grup bibliotekash pĂ«r krijimin e kompozitĂ«ve servera nĂ« bazĂ« tĂ« protokollit Wayland dhe pĂ«rfshin funksionalitetin standard tĂ« menaxherĂ«ve tĂ« dritareve dhe serverĂ«ve tĂ« shfaqjes. Mir pĂ«rdoret nĂ« projekte tĂ« tilla si menaxheri kompozit Miracle, ndĂ«rfaqja pĂ«r kioskat e internetit Ubuntu Frame dhe ambienti i pĂ«rdoruesit Miriway.

    Kjo lëshim është e veçantë për shtimin e mundësisë për zhvillimin e komponenteve në gjuhën Rust. Një nën-sistem alternativ i menaxhimit të hyrjes evdev-rs është realizuar në Rust dhe është nisur puna për front-end-in e shkruar në Rust wayland-rs për Wayland. Nga ndryshimet e papër lidhura me Rust në Mir, është vënë në dukje mbështetje për protokollet Wayland ext_image_copy_capture_v1 dhe input-triggers.

  • ËshtĂ« publikuar lĂ«shimi i parĂ« i analizatorit tĂ« trafikut ayaFlow, i shkruar nĂ« Rust dhe qĂ« pĂ«rdor nĂ«n-sistemin e kernelit Linux eBPF pĂ«r kapjen e paketave tĂ« rrjetit (IPv4/TCP/UDP) dhe ĐșаЎrove Ethernet me ndikim minimal nĂ« performancĂ«. MbĂ«shtetet inspektimi i thellĂ« i protokolleve tĂ« nivelit tĂ« aplikacionit (L7), pĂ«r shembull, nxjerrja e TLS SNI dhe kĂ«rkesave DNS gjatĂ« analizĂ«s sĂ« trafikut tĂ« koduar. Sistemi mbĂ«shtet mbajtjen e njĂ« tabele me gjendjen aktuale tĂ« lidhjeve nĂ« formatin DashMap, ruajtjen e historisĂ« nĂ« SQLite dhe ofrimin e statistikave pĂ«rmes REST API pĂ«r Prometheus.
  • ËshtĂ« realizuar mundĂ«sia e krijimit tĂ« aplikacioneve me shumĂ« tela nĂ« gjuhĂ«n Rust, qĂ« pĂ«rdorin funksionet std::thread dhe ekzekutohen nĂ« anĂ«n e GPU.

Burimi: opennet.ru

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