Rust 1.95 väljaanne. Rusti lisamine Mir-i kuvaseerverisse. Jaotustrafiku analüsaator ayaFlow Rustis.

Välja andmine programmeerimiskeelest Rust 1.95, mis põhineb Mozilla projektist, kuid mida arendatakse praegu sõltumatu mittetulundusühingu Rust Foundationi toel. Keel keskendub mäluhügieeni tagamisele ja pakub vahendeid kõrge paralleelsuse saavutamiseks erinevate ülesannete täitmisel, ilma et oleks vajalik prügikorje või runtime (runtime piirdub põhi-initialiseerimise ja standardraamatukogu haldamisega).

Rustis mäluga töötamise meetodid on suunatud vigade vältimisele pointer'itega manööverdamisel ja probleemide kaitsmisele madala taseme mälutöötlusest, nagu mälupiirkonna kasutamine pärast selle vabastamist, nullpunktide de-referentsimine, mälupiiri ületamine jne. Raamatukogude levitamiseks, ehituse tagamiseks ja sõltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.

Rust tagab turvalise mälutöötluse kompilatsiooni ajal, kontrollides viiteid, jälgides objektide omandit, arvestades objektide elutsüklit (nähtavust) ja hinnates mälule juurdepääsu õigsust koodi käitamise ajal. Rust pakub ka meetmeid enamike täisarvude ületamiste vältimiseks, nõuab muutujate väärtuste algväärtustamist enne kasutamist, käsitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade minimeerimiseks.

Põhilised uuendused:

  • Lisatud makro „cfg_select!“, mida saab kasutada pakendi „cfg-if“ asemel, et hallata mitut kompileerimisolekut „match“ ploki stiilis, ilma et oleks vaja määratleda tingimuslike avalduste ahelat konstruktsiooniga „#[cfg]“. cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = «32» => { fn foo() { /* mitte-unix, 32-bit */ } } _ => { fn foo() { /* mitte unix ja mitte 32-bit */ } } }
  • Võimalus kasutada 'if let' lauseid 'match' blokis on stabiliseeritud, et luua tingimuslikke mustrisobitamisi. Varem oli mitu 'let' lauset, mis kasutavad '&&' operaatorit, stabiliseeritud 'if' ja 'while' blokkides. match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • Inline-assembleri toetus PowerPC ja PowerPC64 arhitektuuridele on stabiliseeritud.
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
    • 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
  • Märkus 'const' rakendatud funktsioonides:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • Tööriistade stabiilsetes versioonides on eemaldatud toimetaja poolt kohandatud sihtplatvormide spetsifikatsioonide edastamise tugi.
  • Sihtplatvormid powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos ja aarch64-apple-visionos-sim on viidud teise toe tasemele, mis tähendab, et kokkupaneku garantii on tagatud, kuid testikomplekti läbimise korral ei anta garantiid.

Kohustuslikud on ka hiljuti väljakuulutatud projektid ja üritused, mis on seotud Rustiga:

  • Ettevõte Canonical tutvustas ekraaniserverit Mir 2.26, mis pakub komposiitide loomiseks mõeldud teegikomplekti serverite Waylandi protokolli põhjal, sisaldades tüüpilisi aknahalduri ja ekraaniserveri funktsioone. Mir on kaasatud sellistesse projektidesse nagu komposiitide haldur Miracle, Ubuntu Frame internetikioskide liides ja kasutajakeskkond Miriway.

    Uus väljaanne on märkimisväärne, kuna see toob lisaks võimaluse arendada komponente Rusti keeles. Rustis on rakendatud alternatiivne sisendihaldussüsteem evdev-rs ja on alustatud tööd Rusti põhise frontendi wayland-rs kallal Waylandi jaoks. Miris on mitte-Rusti seotud muudatustest märgitud tugi Waylandi protokollidele ext_image_copy_capture_v1 ja input-triggers.

  • Avaldatud on traffic analysaatori ayaFlow esimene versioon, mis on kirjutatud Rustis ja kasutab Linuxi eBPF tuuma alamsüsteemi võrgu paketide (IPv4/TCP/UDP) ja Etherneti raamide püüdmise jaoks minimaalse mõjuga jõudlusele. Toetatakse rakendusprotokollide (L7) sügavat inspekteerimist, näiteks TLS SNI ja DNS-päringute ekstraheerimist krüpteeritud liikluse analüüsimisel. Süsteem toetab ühenduste hetkeoleku tabeli pidamist DashMap formaadis, ajaloo salvestamist SQLite-s ja statistika edastamist REST API kaudu Prometheusele.
  • On rakendatud võimalus luua mitme teenuse lõime rakendusi Rusti keeles, kasutades std::thread funktsioone ja neid GPU-l töötlema.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster