Uscita del linguaggio di programmazione Rust 1.76

È stato pubblicato il rilascio del linguaggio di programmazione general-purpose Rust 1.76, originariamente sviluppato da Mozilla e attualmente portato avanti sotto l'egida dell'organizzazione non profit indipendente Rust Foundation. Il linguaggio si concentra sulla gestione sicura della memoria e fornisce strumenti per ottenere un alto parallelismo nell'esecuzione dei compiti, tutto senza l'uso di un garbage collector e del runtime (il runtime si limita all'inizializzazione di base e al supporto della libreria standard).

I metodi di gestione della memoria in Rust liberano gli sviluppatori dagli errori nella manipolazione dei puntatori e li proteggono da problematiche derivanti dal lavoro a basso livello con la memoria, come l'accesso a zone di memoria dopo la loro liberazione, la dereferenziazione di puntatori nulli, il superamento dei limiti del buffer, e così via. Per la distribuzione delle librerie, la gestione della compilazione e delle dipendenze, si è sviluppato un gestore di pacchetti chiamato Cargo. Le librerie sono ospitate nel repository crates.io.

La gestione sicura della memoria in Rust è garantita durante la compilazione tramite il controllo dei riferimenti, il tracciamento della proprietà degli oggetti, la gestione della durata degli oggetti (scope) e la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust offre anche strumenti per proteggere da overflow interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita e offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

Novità principali:

  • È stata aggiunta alla documentazione una sezione separata che descrive la compatibilità tra diversi tipi di argomenti e i tipi di valori restituiti dalle funzioni a livello di ABI. Rispetto alle versioni precedenti, è garantita la compatibilità a livello di ABI per i tipi «char» e «u32», che hanno dimensioni e allineamento identici.
  • Oltre alla chiamata «any::type_name::()» disponibile in precedenza, che restituisce una descrizione sotto forma di stringa per il tipo specificato dal parametro «T», è stata aggiunta la funzione «type_name_of_val(&T)» che consente di ottenere informazioni sul tipo a partire da qualsiasi riferimento non denominato. fn get_iter() -> impl Iterator { [1, 2, 3].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); let sum: i32 = iter.sum(); println!("La somma di `{iter_name}` è {sum}."); } L'output sarà: La somma di `core::array::iter::IntoIter` è 6.
  • Una nuova serie di API è stata traslata nella categoria stabile, stabilizzando i metodi e le implementazioni dei tipi:
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Result::inspect
    • Result::inspect_err
    • Option::inspect
    • type_name_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • È stato implementato il terzo livello di supporto per le piattaforme {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios e arm64e-apple-darwin. Il terzo livello implica supporto base, senza automatizzazione dei test, pubblicazione di build ufficiali e verifica della possibilità di buildare il codice.

In aggiunta, è possibile notare la dimostrazione dello scheduler sperimentale scx_rustland, scritto in Rust e eseguito nello spazio utente (l'estrazione della logica di pianificazione dal kernel nello spazio utente è realizzata tramite gli strumenti sched-ext, che utilizzano BPF). Lo scheduler è ottimizzato per aumentare la priorità dei task interattivi rispetto a quelli che caricano intensamente la CPU. Ad esempio, nel test di avvio di un'applicazione di gioco insieme alla compilazione del kernel, lo scheduler scx_rustland ha consentito di ottenere un FPS più elevato nel gioco rispetto all'uso dello scheduler standard EEVDF.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster