Il team di sviluppo è felice di presentarvi Rust 1.36!
Cosa c'è di nuovo in Rust 1.36?
E ora nei dettagli:
- In Rust 1.36 finalmente è stato stabilizzato il trait Future.
- Crate alloc.
A partire da Rust 1.36, parti di std che dipendono dall'allocatore globale (ad esempio, Vec), si trovano nel crate alloc. Ora std riesporta queste parti. Maggiore approfondimento su questo. - MaybeUninit al posto di mem::uninitialized.
Nelle versioni precedenti, mem::uninitialized permetteva di bypassare il controllo di inizializzazione, utilizzato per allocazioni pigre di array, ma questa funzione è piuttosto pericolosa (maggiori dettagli), quindi è stato stabilito il tipo MaybeUninit, che è più sicuro.
E poiché MaybeUninit è un'alternativa più sicura, a partire da Rust 1.38, mem::uninitialized diventerà una funzione obsoleta.
Se vuoi saperne di più sulla memoria non inizializzata, puoi leggere il post sul blog (Alexis Beingessner). - NLL per Rust 2015.
Nell'annuncio di Rust 1.31.0 Gli sviluppatori ci hanno parlato di NLL (Non-Lexical Lifetime), un miglioramento del linguaggio che rende il borrow checker più intelligente e user-friendly. Ecco un esempio:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // Questo non era permesso prima della versione 1.31.0.
}Nella versione 1.31.0, NLL funzionava solo in Rust 2018, con la promessa che gli sviluppatori avrebbero aggiunto supporto anche per Rust 2015.
Se vuoi saperne di più su NLL, puoi leggere di più in questo post sul blog (Felix Klocks). - Una nuova flag per Cargo —offline.
In Rust 1.36 è stata stabilita una nuova flag per Cargo. La flag —offline dice a Cargo di utilizzare le dipendenze memorizzate nella cache localmente, in modo che possano essere utilizzate senza internet in seguito. Quando le dipendenze necessarie non sono disponibili offline, e se è necessaria una connessione internet, Cargo restituirà un errore. Per scaricare preventivamente le dipendenze, puoi utilizzare il comando cargo fetch, che scaricherà tutte le dipendenze. - Qui puoi leggere una recensione più dettagliata delle modifiche.
Ci sono anche alcune modifiche nella libreria standard:
- Ora il macro dbg!() può accettare più argomenti.
- Alcuni API ora sono contrassegnati come const:
- Nuovi API stabilizzati:
- Puoi trovare altre modifiche nella libreria standard qui.
Altre modifiche Rust, Cargo e Clippy.
Fonte: linux.org.ru
