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

Lëshimi i gjuhës së programimit Rust 1.95, e cila u zhvillua fillimisht nga projekti Mozilla, por tani po zhvillohet nën mbështetje të një organizate të pavarur, jo-fitimprurëse, Rust Foundation. Gjuha fokusohet në sigurinë e punës me memorie dhe ofron mjete për arritjen e një paralelizmi të lartë të ekzekutimeve, duke mos përdorur menaxher të mbetjeve dhe kohëzgjatjen (runtime e reduktuar në fillimin dhe mbështetje të bibliotekës standarde).

Metodat e punës me memorie në Rust janë të orientuara për të eliminuar gabimet gjatë manipulimit të treguesve dhe për të mbrojtur nga problemet që lindin nga puna me nivel të ulët me memorinë, siç janë akseset në zona memorien pas lirimit të saj, dereferencimi i treguesve null, tejkalimi i kufijve të bufeve etj. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me ndihmën e menaxherit të paketave Cargo. Mbështetet një depo për bibliotekat, crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • ËshtĂ« shtuar makrosi „cfg_select!“, i cili mund tĂ« pĂ«rdoret si zĂ«vendĂ«sim pĂ«r paketĂ«n „cfg-if“ pĂ«r tĂ« pĂ«rpunuar kushtet e shumĂ«fishta tĂ« kompaktimit nĂ« stilin e bllokut „match“, pa definimin e njĂ« zinxhiri shprehjesh kushtore me konstrukcionin „#[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 tĂ« kushtizuara me modele. MĂ« parĂ«, mbĂ«shtetje pĂ«r pĂ«rcaktimin e shumĂ« shprehjeve „let“ duke pĂ«rdorur operatorin „&&“ ishte stabilizuar pĂ«r blloqet „if“ dhe „while“. match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • ËshtĂ« stabilizuar mbĂ«shtetje pĂ«r assembler-in e brendshĂ«m pĂ«r arkitekturat PowerPC dhe PowerPC64.
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • 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
  • Priznaku «const» aplicohet nĂ« funksione:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • NĂ« versionet e stabilizuara tĂ« instrumenteve Ă«shtĂ« hequr mbĂ«shtetje pĂ«r kalimin e specifikimeve tĂ« platformave tĂ« veta tek kompajleri.
  • Platforma tĂ« targetuara 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 nĂ«nkupton garantimin e ndĂ«rtimit, por pa garanci gjatĂ« kalimit pĂ«rmes paketĂ«s sĂ« testeve.

Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:

  • Kompania Canonical prezantoi serverin e shfaqjes Mir 2.26, duke ofruar njĂ« grup bibliotekash pĂ«r krijimin e kompozitave serverĂ«sh tĂ« bazuara nĂ« protokollin Wayland dhe qĂ« pĂ«rfshin funksionalitetin standard tĂ« menaxherĂ«ve tĂ« dritareve dhe serverĂ«ve tĂ« shfaqjes. Mir Ă«shtĂ« angazhuar nĂ« projekte si menaxheri kompozit Miracle, shelli pĂ«r kiosket e internetit Ubuntu Frame dhe ambienti i pĂ«rdoruesit Miriway.

    Lëshimi i ri është i veçantë përfshirjen e mundësisë për zhvillimin e komponentëve në gjuhën Rust. Një nën-sistem alternativ i menaxhimit të inputit evdev-rs është realizuar në Rust dhe është filluar puna mbi front-endin wayland-rs të shkruar në Rust për Wayland. Nga ndryshimet që nuk lidhen me Rust, në Mir është e dukshme mbështetje për protokollet Wayland ext_image_copy_capture_v1 dhe input-triggers.

  • LĂ«shimi i parĂ« i analizuesit tĂ« trafikut ayaFlow, tĂ« shkruar nĂ« Rust dhe qĂ« pĂ«rdor nĂ«n-sistemin e kernelit Linux eBPF pĂ«r kapjen e paketave rrjet (IPv4/TCP/UDP) dhe kornizave Ethernet me ndikim minimal nĂ« performancĂ« Ă«shtĂ« publikuar. MbĂ«shtetet inspektimi i thellĂ« i protokolleve tĂ« nivelit aplikativ (L7), siç Ă«shtĂ« nxjerrja e TLS SNI dhe kĂ«rkesave DNS gjatĂ« analizĂ«s sĂ« trafikxet tĂ« enkriptuara. 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 pĂ«r krijimin e aplikacioneve me shumĂ« fibra nĂ« gjuhĂ«n Rust, qĂ« pĂ«rdorin funksionet std::thread dhe ekzekutohen nĂ« anĂ«n e GPU.

Burimi: opennet.ru

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