Rilascio del linguaggio di programmazione Rust 1.69

È stato pubblicato il rilascio del linguaggio di programmazione general-purpose Rust 1.69, fondato dal progetto Mozilla, ma ora sviluppato sotto gli auspici dell'organizzazione no-profit indipendente Rust Foundation. Il linguaggio si concentra sulla sicurezza della memoria e fornisce i mezzi per ottenere un elevato parallelismo del lavoro evitando l'uso di un Garbage Collector e del runtime (il runtime è ridotto all'inizializzazione di base e alla manutenzione della libreria standard).

I metodi di gestione della memoria di Rust salvano lo sviluppatore da errori durante la manipolazione dei puntatori e proteggono dai problemi che sorgono a causa della gestione della memoria di basso livello, come l'accesso a un'area di memoria dopo che Γ¨ stata liberata, la dereferenziazione di puntatori nulli, sovraccarichi del buffer, ecc. Per distribuire le librerie, fornire build e gestire le dipendenze, il progetto sviluppa il gestore di pacchetti Cargo. Il repository crates.io Γ¨ supportato per l'hosting di librerie.

La sicurezza della memoria viene fornita in Rust in fase di compilazione attraverso il controllo dei riferimenti, tenendo traccia della proprietΓ  dell'oggetto, tenendo traccia della durata dell'oggetto (scopi) e valutando la correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche protezione contro gli overflow di numeri 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, offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

Principali innovazioni:

  • Il gestore pacchetti Cargo implementa il rilevamento degli avvisi che possono essere risolti automaticamente e le raccomandazioni appropriate per eseguire "cargo fix" o "cargo clippy --fix". avviso: importazione non utilizzata: 'std::hash::Hash' --> src/main.rs:1:5 | 1| usa std::hash::hash; | ^^^^^^^^^^^^^^^ | = nota: '#[warn(unused_imports)]' attivo per impostazione predefinita avviso: 'foo' (bin "foo") ha generato 1 avviso (esegui 'cargo fix --bin "foo"' per applicare 1 suggerimento)
  • Aggiunto Cargo per visualizzare una raccomandazione per utilizzare il comando "cargo add" quando si tenta di installare una libreria con il comando "cargo install".
  • Per ridurre il tempo di compilazione, le informazioni di debug negli script di compilazione sono state disabilitate per impostazione predefinita. Se gli script di compilazione vengono eseguiti correttamente, la modifica non apporterΓ  alcuna differenza visibile, ma se fallisce, il dump del backtrace conterrΓ  meno informazioni. Per restituire il vecchio comportamento a Cargo.toml aggiungere: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Una nuova porzione dell'API Γ¨ stata spostata nella categoria stabile, inclusi i metodi e le implementazioni dei tratti sono stati stabilizzati:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • L'attributo "const", che determina la possibilitΓ  di utilizzarlo in qualsiasi contesto al posto delle costanti, viene utilizzato nelle funzioni:
    • IndirizzoSocket::nuovo
    • IndirizzoSocket::ip
    • IndirizzoSocket::porta
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::nuovo
    • SocketAddrV4::ip
    • SocketAddrV4::porta
    • SocketAddrV6::nuovo
    • SocketAddrV6::ip
    • SocketAddrV6::porta
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Aggiunta la possibilitΓ  di utilizzare true e false flag negli argomenti del compilatore.

Fonte: opennet.ru

Aggiungi un commento