rilascio del linguaggio di programmazione di sistema , sviluppato dal progetto Mozilla. Il linguaggio è focalizzato sul lavoro sicuro con la memoria, offre gestione automatica della memoria e fornisce strumenti per raggiungere un alto parallelismo nell'esecuzione delle attività, il tutto senza l'uso di un garbage collector e runtime.
La gestione automatica della memoria in Rust libera gli sviluppatori dalla manipolazione dei puntatori e protegge da problemi derivanti da operazioni a basso livello con la memoria, come l'accesso a memoria già liberata, dereferenziazione di puntatori nulli, overflow del buffer e simili. Per la distribuzione delle librerie, la gestione della compilazione e delle dipendenze, è in fase di sviluppo un gestore di pacchetti , che consente di ottenere le librerie necessarie per il programma con un clic. Per l'hosting delle librerie è supportato il repository .
Principali :
- Tipi (trait) , e implementati per allocazioni su heap Box‹dyn FnOnce›, Box‹dyn FnMut› e Box‹dyn Fn›;
- Aggiunto conversione di closure a puntatori a funzioni non sicuri (unsafe fn);
- È stata implementata la possibilità di chiamare il macro «dbg!» senza argomenti per visualizzare in stderr il nome del file e il numero di riga senza ispezionare la variabile, il che è comodo per il debug delle espressioni condizionali;
- Nei tipi per numeri con punto mobile f32 e f64 è stato aggiunto il metodo «» per copiare il segno da un numero all'altro;
- Nei tipi Range* è stato aggiunto il metodo ««, che consente di verificare se un valore specificato è compreso nell'intervallo;
- Aggiunto il metodo , che consentono di riflettere e dividere un valore preso in prestito RefCell per diversi componenti di dati presi in prestito;
- Aggiunto il metodo per sostituire il valore corrente di RefCell e restituire il vecchio valore come risultato;
- Aggiunto il metodo per l'hashing di un puntatore o riferimento all'indirizzo, non al valore indirizzato;
- Aggiunto il metodo per copiare il contenuto delle opzioni Option‹&T› o Option‹&mut T›;
- È stata tradotta una nuova serie di API in categoria stabile, compresi i metodi stabilizzati
f32::copysign,
f64::copysign,
RefCell::replace_with,
RefCell::map_split,
ptr::hash,
Range::contains,
RangeFrom::contains,
RangeTo::contains,
RangeInclusive::contains,
RangeToInclusive::contains e
Option::copied; - In clippy (linter) è stata aggiunta una verifica drop_bounds, attivata quando viene aggiunto un vincolo "T: Drop" a una funzione;
- Nel compilatore è stata aggiunta la supporto per la nuova piattaforma target
wasm32-unknown-wasi (interfaccia per l'uso di WebAssembly al di fuori del browser); - L'toolchain Rust è stato adattato per le distribuzioni basate sulla standard C library Musl.
Fonte: opennet.ru
