Pubblicazione del linguaggio di programmazione Rust 1.69

È stata pubblicata la release del linguaggio di programmazione di uso generale Rust 1.69, inizialmente sviluppato da Mozilla, ma ora gestito dalla Rust Foundation, un'organizzazione indipendente e no-profit. Il linguaggio si concentra sulla gestione sicura della memoria e offre strumenti per raggiungere un elevato parallelismo nell'esecuzione dei task, evitando l'uso di garbage collector e runtime (il runtime è ridotto alla semplice inizializzazione e 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:

  • Nel gestore di pacchetti Cargo è stata implementata l'identificazione degli avvisi che possono essere risolti automaticamente, con suggerimenti per l'esecuzione di «cargo fix» o «cargo clippy --fix». warning: import non utilizzato: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | use std::hash::Hash; | ^^^^^^^^^^^^^^^ | = nota: '#[warn(unused_imports)]' attivata per default warning: 'foo' (bin «foo») ha generato 1 avviso (eseguire 'cargo fix --bin «foo»' per applicare 1 suggerimento)
  • In Cargo è stata aggiunta l'indicazione di utilizzare il comando «cargo add» quando si tenta di installare una libreria con «cargo install».
  • Per ridurre i tempi di compilazione, l'inclusione delle informazioni di debug negli script di build è disabilitata per impostazione predefinita. Al termine dell'esecuzione degli script di build, le modifiche non presentano differenze visibili, ma in caso di errori, il dump con la traccia inversa conterrà meno informazioni. Per ripristinare il comportamento precedente, è necessario aggiungere a Cargo.toml: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Una nuova serie di API è stata traslata nella categoria stabile, stabilizzando i metodi e le implementazioni dei tipi:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • L'indicatore «const», che determina la possibilità di utilizzo in qualsiasi contesto al posto delle costanti, è stato applicato nelle funzioni:
    • SocketAddr::new
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::new
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::new
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • È stata aggiunta la possibilità di utilizzare i flag true e false negli argomenti del compilatore.

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