Lansare Rust 1.95. Adăugarea Rust în serverul de display Mir. Analizor de trafic ayaFlow pe Rust

A fost publicată versiunea limbajului de programare Rust 1.95, inițial dezvoltat de proiectul Mozilla, dar acum susținut de organizația non-profit Rust Foundation. Limbajul se concentrează pe gestionarea sigură a memoriei și oferă metode pentru atingerea unei înalte paralele în executarea sarcinilor, fără a utiliza un colector de gunoi și runtime (runtime-ul se reduce la inițializarea de bază și întreținerea bibliotecii standard).

Metodele de gestionare a memoriei în Rust sunt orientate spre eliminarea erorilor în manipularea pointerilor și protejarea împotriva problemelor care apar din lucrul la nivel de memorie, cum ar fi accesarea unei zone de memorie după eliberarea ei, dereferentierea pointerilor nuli, depășirea limitelor buffer-ului etc. Pentru distribuirea bibliotecilor, asigurarea compilării și gestionarea dependențelor, proiectul se dezvoltă cu ajutorul managerului de pachete Cargo. Un depozit pentru biblioteci este susținut la crates.io.

Lucrul sigur cu memoria este asigurat în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectelor, luarea în considerare a timpului de viață al obiectelor (domeniul de vizibilitate) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, instrumente pentru protejarea împotriva suprasaturării numerice, impune inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică conceptul de referințe și variabile imutabile (immutable) din oficiu și oferă o tipizare statică puternică pentru a minimiza erorile logice.

Noutăți principale:

  • A fost adăugat macro-ul «cfg_select!», care poate fi utilizat ca alternativă pentru pachetul «cfg-if» pentru gestionarea mai multor condiții de compilare în stilul blocului «match», fără a defini o lanț de expresii condiționale cu construcția «#[cfg]». cfg_select! { unix => { fn foo() { \/ * unix *\/ } } target_pointer_width = «32» => { fn foo() { \/ * non-unix, 32-bit *\/ } } _ => { fn foo() { \/ * non unix și non 32-bit *\/ } } }
  • A fost stabilizată capacitatea de a specifica expresii «if let» în interiorul blocurilor «match» pentru a crea asocieri condționale pe bază de mențiuni. Anterior, suportul pentru specificarea mai multor expresii «let» utilizând operatorul «&&» a fost stabilizat pentru blocurile «if» și «while». match value { Some(x) if let Ok(y) = compute(x) => { println!(«{}, {}», x, y); } _ => {} }
  • A fost stabilizată suportul pentru asamblor inline pentru arhitecturile PowerPC și PowerPC64.
  • O nouă porțiune de API a fost transformată în stabilitate, inclusiv metode și implementări ale tiparelor stabilize.
    • 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
  • Semnul „const” aplicat în funcții:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • În versiunile stabile ale uneltelor, suportul pentru transmiterea către compilator a specificațiilor platformelor proprii a fost eliminat.
  • Platformele țintă 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 au fost traduse la un al doilea nivel de suport, care implică o garanție de construcție, dar fără garanții pentru trecerea setului de teste.

Ayrton Muñoz, care a implementat suport pentru platforma Sony PlayStation 1 în compilatorul Rust și a lucrat la portarea FreeBSD pe computere cu cipuri Apple Silicon, a realizat pentru FreeBSD posibilitatea de a crea componente de kernel și drivere de dispozitive în limbajul Rust. Pentru testare, a fost propus un set de KPI-uri (Kernel Programming Interface), care permite utilizarea codului Rust în kernelul FreeBSD, precum și driverul audio virtio (virtio_snd) creat folosind aceste legături, driverul HID DockChannel pentru tastatură în M2 MacBook și câteva drivere de nivel inferior pentru subsistemele computerelor Mac cu cipuri Apple Silicon.

  • Compania Canonical a lansat serverul de afișare Mir 2.26, care oferă un set de biblioteci pentru crearea de compozite servere bazate pe protocolul Wayland și include funcționalitatea standard a managerilor de feronerie și a serverelor de afișare. Mir este utilizat în proiecte precum managerul de compozit Miracle, interfața pentru chioșcurile web Ubuntu Frame și mediu desktop Miriway.

    Noua versiune se remarcă prin adăugarea posibilității de dezvoltare a componentelor în limbajul Rust. O subsistemă alternativă de gestionare a intrărilor, evdev-rs, a fost implementată în Rust și a început lucrul la front-endul wayland-rs pentru Wayland. Printre modificările nelegate de Rust în Mir se numără suportul pentru protocoalele Wayland ext_image_copy_capture_v1 și input-triggers.

  • A fost lansată prima versiune a analizoarei de trafic ayaFlow, scrisă în Rust și utilizând subsistemul kernel Linux eBPF pentru interceptarea pachetelor de rețea (IPv4/TCP/UDP) și a cadrelor Ethernet cu un impact minim asupra performanței. Susține inspecția profundă a protocoalelor de nivel aplicație (L7), cum ar fi extragerea TLS SNI și a cererilor DNS în timpul analizei traficului criptat. Sistemul suportă menținerea unei tabele cu starea curentă a conexiunilor în format DashMap, salvarea istoricului în SQLite și furnizarea de statistici prin REST API pentru Prometheus.
  • A fost implementată posibilitatea de a crea aplicații multi-thread în limbajul Rust, utilizând funcțiile std::thread și executate pe partea GPU.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster