Rilascio del linguaggio di programmazione Rust 1.46

pubblicato versione 1.46 del linguaggio di programmazione del sistema Rugginefondato dal progetto Mozilla. Il linguaggio si concentra sulla gestione sicura della memoria, fornisce una gestione automatica della memoria e fornisce i mezzi per ottenere un elevato parallelismo dei lavori evitando l'uso di un garbage collector e runtime.

La gestione automatica della memoria di Rust salva lo sviluppatore da errori durante la manipolazione dei puntatori e protegge dai problemi che sorgono a causa della manipolazione della memoria di basso livello, come l'accesso a un'area di memoria dopo che è stata liberata, il dereferenziamento di puntatori nulli, sovraccarichi del buffer, ecc. Per distribuire le librerie, garantire l'assemblaggio e gestire le dipendenze, il progetto sviluppa un gestore di pacchetti ufficio, che ti consente di ottenere le librerie necessarie per il programma in un clic. È supportato un repository per ospitare le librerie casse.io.

Il principale innovazioni:

  • Sono state ampliate le capacità delle funzioni definite utilizzando l'espressione “const fn”, che possono essere chiamate non solo come funzioni regolari, ma anche utilizzate in qualsiasi contesto al posto delle costanti. Queste funzioni vengono calcolate in fase di compilazione, non in fase di esecuzione, quindi sono soggette ad alcune restrizioni, come la possibilità di leggere solo dalle costanti.

    La nuova versione rimuove il divieto di utilizzare gli operatori booleani (“&&” e “||”) in tali funzioni e consente l'uso dei costrutti “if”, “if let”, “match”,
    " while", " while let" e "loop", e fornisce anche la possibilità di convertire in porzioni (slice, array dinamici) utilizzando l'espressione "&[T]". L'uso di queste funzionalità nelle funzioni “const fn” consente di spostare alcune operazioni ad alta intensità di risorse nella fase di compilazione. Ad esempio, l'implementazione di "const-sha1" rende possibile calcolare gli hash SHA-1 in fase di compilazione, il che porta ad accelerare i collegamenti WinRT per Rust di quasi 40 volte.

  • Per rendere i messaggi di errore più informativi, è stato stabilizzato il supporto per l'attributo “#[track_caller]”, utile per funzioni come unwrap, che possono causare panico se i tipi vengono utilizzati in modo errato. L'attributo specificato verrà utilizzato dal gestore del panico per stampare la posizione del chiamante in un messaggio di errore.
  • Nel metodo std::mem::forget viene utilizzato l'attributo “const”, che determina la possibilità di utilizzarlo in qualsiasi contesto al posto delle costanti.
  • Una nuova porzione dell'API è stata spostata nella categoria stabile, incluse le opzioni stabilizzate Option::zip e vec::Drain::as_slice.
  • Nel gestore pacchetti Cargo aggiunto supporto per nuove variabili di ambiente impostate durante la compilazione di un pacchetto: CARGO_BIN_NAME (nome del file eseguibile risultante), CARGO_CRATE_NAME (nome del pacchetto), CARGO_PKG_LICENSE (licenza specificata nel manifest), CARGO_PKG_LICENSE_FILE (percorso del file di licenza).

Fonte: opennet.ru

Aggiungi un commento