Udgivelse af Rust 1.95. Tilføjelse af Rust til displayserveren Mir. Trafikanalysator ayaFlow skrevet i Rust

Rust 1.95, et programmeringssprog udviklet af Mozilla og nu understøttet af den uafhængige nonprofitorganisation Rust Foundation, er offentliggjort. Sproget fokuserer på sikker hukommelseshåndtering og giver værktøjer til høj parallellisme ved at undgå brug af en affaldscollector og runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoderne til hukommelseshåndtering i Rust har til formål at eliminere fejl i forbindelse med manipulation af pegepunkter og beskytte mod problemer der opstår ved lavniveau hukommelseshåndtering, såsom adgang til hukommelse efter den er frigivet, de-referering af nulpegepunkter, overskridelse af buffergrænser osv. For distribution af biblioteker, sikring af bygning og håndtering af projektafhængigheder, udvikles pakkehåndteringssystemet Cargo. For placering af biblioteker understøttes et repository på crates.io.

Sikker håndtering af hukommelse sikres i Rust under kompilering ved referencekontrol, sporing af ejerskab af objekter, hensyntagen til livstid af objekter (synlighed) og vurdering af korrekt adgang til hukommelse under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltals-overløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige (immutable) referencer og variabler som standard og tilbyder stærk statisk typisering for at minimere logiske fejl.

Hovednyhederne:

  • Macroen «cfg_select!» er blevet tilføjet, som kan bruges i stedet for pakken «cfg-if» til at håndtere flere kompilationsbetingelser i stil med blokken «match», uden at skulle definere en kæde af betingede udtryk med konstruktionen «#[cfg]». cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = «32» => { fn foo() { /* ikke-unix, 32-bit */ } } _ => { fn foo() { /* ikke unix og ikke 32-bit */ } } }
  • Muligheden for at angive «if let»-udtryk inden for «match»-blokke for at skabe betingede mønstersammenligninger er blevet stabiliseret. Tidligere blev understøttelsen af at angive flere «let»-udtryk med brug af operatøren «&&» stabiliseret for «if»- og «while»-blokke. match value { Some(x) if let Ok(y) = compute(x) => { println!(«{}, {}», x, y); } _ => {} }
  • Understøttelse af inline-assembler for PowerPC og PowerPC64-arkitekturer er blevet stabiliseret.
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af traits:
    • 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
  • Flagget «const» anvendt i funktionerne:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • Understøttelse af overførsel af specifikationer for brugerdefinerede målapparater er blevet fjernet i stabile versioner af værktøjet.
  • Målplatforme powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos og aarch64-apple-visionos-sim er blevet oversat til andet supportniveau, som indebærer garanti for bygningen, men uden garantier ved gennemgang af testsættet.

Der kan desuden nævnes nyligt annoncerede projekter og begivenheder relateret til Rust:

  • Canonical har præsenteret displayserveren Mir 2.26, der tilbyder et sæt biblioteker til at skabe sammensatte servere baseret på Wayland-protokollen og inkluderer typisk funktionalitet for vindueschefer og displayservere. Mir er involveret i projekter som den sammensatte chef Miracle, grænsefladen til internetkioskene Ubuntu Frame og brugergrænsefladen Miriway.

    Den nye version er bemærkelsesværdig for tilføjelsen af muligheden for at udvikle komponenter i Rust-sproget. Eine alternative input-håndteringsunderstruktur evdev-rs er implementeret i Rust, og arbejdet med en Rust-baseret frontend wayland-rs til Wayland er påbegyndt. Blandt de ikke-relaterede ændringer til Rust i Mir er der tilføjet support til Wayland-protokoller ext_image_copy_capture_v1 og input-triggers.

  • Den første udgave af trafikanalysatoren ayaFlow er offentliggjort, skrevet i Rust og bruger Linux-kernesytemets eBPF til at fange netværkspakker (IPv4/TCP/UDP) og Ethernet-rammer med minimal indflydelse på ydeevnen. Dybtgående inspektion af anvendelsesprotokoller (L7) understøttes, eksempelvis ekstraktion af TLS SNI og DNS-anmodninger under analysen af krypteret trafik. Systemet understøtter opbevaring af nuværende forbindelsers tilstand i et DashMap-format, historielagring i SQLite samt fremlægger statistik via REST API til Prometheus.
  • Der er implementeret mulighed for at oprette multitrådede applikationer i Rust, der benytter funktioner fra std::thread og kører på GPU-siden.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster