U linguaghju di prugrammazione Rust 1.95, fundatu da u prugettu Mozilla ma avà sviluppatu sottu l'auspici di a Fundazione Rust, un'urganizazione senza scopu di lucro, hè statu publicatu. U linguaghju si cuncentra nantu à a sicurità di a memoria è furnisce strumenti per ottene un altu parallelisimu di l'esecuzione di i compiti, pur evitendu l'usu di un garbage collector è di un runtime (u runtime hè riduttu à l'inizializazione basica è a manutenzione di a biblioteca standard).
I metudi di gestione di a memoria di Rust sò cuncipiti per eliminà l'errori in a manipulazione di i puntatori è prutegge contr'à i prublemi derivanti da a gestione di a memoria di bassu livellu, cum'è l'accessu à a memoria dopu ch'ella hè stata liberata, u dereferenziamentu di i puntatori nulli, i sovraccarichi di u buffer, ecc. U prugettu sviluppa u gestore di pacchetti Cargo per distribuisce e biblioteche, facilità e compilazioni è gestisce e dipendenze. U repositoriu crates.io hè mantinutu per l'ospitu di e biblioteche.
A sicurezza di a memoria hè furnita in Rust à u tempu di compilazione attraversu a verificazione di riferimentu, u seguimentu di a pruprietà di l'ughjettu, a traccia di a vita di l'ughjettu (scopi), è a valutazione di a correttezza di l'accessu di memoria durante l'esekzione di codice. Rust furnisce ancu prutezzione contra i overflows integer, esige l'inizializazione obligatoria di i valori variabili prima di l'usu, gestisce l'errori megliu in a biblioteca standard, applica u cuncettu di referenze immutabili è variabili per difettu, offre una forte tipografia statica per minimizzà l'errori lògichi.
Innuvazioni principali:
- Aghjunta a macro "cfg_select!", chì pò esse aduprata invece di u pacchettu "cfg-if" per gestisce parechje cundizioni di compilazione in u stile di un bloccu "match", senza definisce una catena di cundiziunali cù a custruzzione "#[cfg]". cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* non-unix, 32-bit */ } } _ => { fn foo() { /* micca unix è micca 32-bit */ } } }
- A capacità di specificà espressioni "if let" in blocchi "match" per creà currispundenza di mudelli cundiziunali hè stata stabilizzata. Prima, u supportu per specificà parechje espressioni "let" cù l'operatore "&&" era stabilizatu per i blocchi "if" è "while". match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
- Supportu di l'assemblatore in linea stabilizatu per l'architetture PowerPC è PowerPC64.
- Una nova parte di l'API hè stata trasferita à a categuria di stabile, cumprese i metudi è l'implementazione di i tratti sò stati stabilizzati:
- ForseUninit<[T; N]>: Da<[ForseUninit ; N]>
- ForseUninit<[T; N]>: AsRef<[ForseUninit ; N]>
- ForseUninit<[T; N]>: AsRef<[ForseUninit ]>
- ForseUninit<[T; N]>: AsMut<[ForseUninit ; N]>
- ForseUninit<[T; N]>: AsMut<[ForseUninit ]>
- [ForseUninit] ; N]: Da
- Cella<[T; N]>: AsRef<[Cella ; N]>
- Cella<[T; N]>: AsRef<[Cella ]>
- Cella<[T]>: AsRef<[Cella ]>
- bool: TryFrom<{integer}>
- AtomicPtr::aghjurnamentu
- AtomicPtr::try_update
- AtomicBool::aghjurnamentu
- AtomicBool::try_update
- AtomicIn::aghjurnamentu
- AtomicIn::try_update
- AtomicUn::aghjurnamentu
- AtomicUn::try_update
- cfg_select!
- core di u mod::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
- ListaLigata::push_front_mut
- LinkedList::push_back_mut
- Layout::dangling_ptr
- Layout::repeat
- Layout::repeat_packed
- Layout::extend_packed
- U signu "const" hè usatu in funzioni:
- fmt::from_fn
- ControlFlow::is_break
- ControlFlow::is_continue
- In e versioni stabili di u kit di strumenti, u supportu per passà e specificazioni di a piattaforma di destinazione nativa à u compilatore hè statu eliminatu.
- E piattaforme di destinazione powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos, è aarch64-apple-visionos-sim sò state spostate à u livellu di supportu 2, chì include una garanzia di compilazione ma nisuna garanzia di successu di a suite di test.
Inoltre, vulemu mette in risaltu i prughjetti è l'eventi annunziati di recente in relazione à Rust:
- Canonical hà introduttu u servitore di visualizazione Mir 2.26, chì furnisce un inseme di biblioteche per creà immagini cumposte. servitori Basatu annantu à u protocolu Wayland è incorporendu a funziunalità tipica di i gestori di finestre è di i servitori di visualizazione, Mir hè adupratu in prughjetti cum'è u gestore di cumpusizione Miracle, una shell di chioscu web, è Ubuntu Ambiente d'utilizatore Frame è Miriway.
A nova versione hè nutata per l'aghjunta di a capacità di sviluppà cumpunenti in Rust. Un sottosistema di gestione di input alternativu, evdev-rs, hè statu implementatu in Rust, è u travagliu hè cuminciatu nantu à un frontend basatu annantu à Rust, wayland-rs, per Wayland. I cambiamenti micca ligati à Rust in Mir includenu u supportu per i protocolli Wayland ext_image_copy_capture_v1 è input-triggers.
- A prima versione di l'analizatore di trafficu ayaFlow, scritta in Rust è utilizendu u sottosistema di u kernel, hè stata publicata. Linux eBPF per intercettà pacchetti di rete (IPv4/TCP/UDP) è frame Ethernet cù un impattu minimu nantu à e prestazioni. Supporta l'ispezione approfondita di i protocolli di livellu d'applicazione (L7), cum'è l'estrazione di query TLS SNI è DNS quandu si analizza u trafficu criptatu. U sistema mantene una tabella di u statu attuale di cunnessione in furmatu DashMap, memorizza a storia in SQLite è restituisce statistiche via una API REST à Prometheus.
- A capacità di creà applicazioni multithread in u linguaghju Rust aduprendu funzioni std::thread è eseguite da u latu GPU hè stata implementata.
Source: opennet.ru
