Rilascio del linguaggio di programmazione Rust 1.35

Si è svolto rilascio del linguaggio di programmazione di sistema Rust 1.35, 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 Cargo, che consente di ottenere le librerie necessarie per il programma con un clic. Per l'hosting delle librerie è supportato il repository crates.io.

Principali novità:

  • Tipi (trait) FnOnce, FnMut e Fn implementati per allocazioni su heap tipi boxed Box‹dyn FnOnce›, Box‹dyn FnMut› e Box‹dyn Fn›;
  • Aggiunto possibilità 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 «copysign» per copiare il segno da un numero all'altro;
  • Nei tipi Range* è stato aggiunto il metodo «contains«, che consente di verificare se un valore specificato è compreso nell'intervallo;
  • Aggiunto il metodo Ref:Cell:map_split, che consentono di riflettere e dividere un valore preso in prestito RefCell per diversi componenti di dati presi in prestito;
  • Aggiunto il metodo RefCell::replace_with per sostituire il valore corrente di RefCell e restituire il vecchio valore come risultato;
  • Aggiunto il metodo ptr::hash per l'hashing di un puntatore o riferimento all'indirizzo, non al valore indirizzato;
  • Aggiunto il metodo Option::copied 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 WASI 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

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