Rilascio del linguaggio di programmazione Rust 1.54

È stata pubblicata la versione del linguaggio di programmazione di sistema Rust 1.54, nato dal progetto Mozilla, ma ora sviluppato sotto l'egida dell'organizzazione no-profit indipendente Rust Foundation. Il linguaggio si concentra sulla sicurezza della memoria, fornisce la gestione automatica della memoria e fornisce i mezzi per ottenere un elevato parallelismo delle attività senza utilizzare un garbage collector o un runtime (il runtime è ridotto all'inizializzazione di base e alla manutenzione della libreria standard).

La gestione automatica della memoria di Rust elimina gli errori durante la manipolazione dei puntatori e protegge dai problemi derivanti dalla manipolazione della memoria di basso livello, come l'accesso a una regione di memoria dopo che è stata liberata, dereferenziazioni di puntatori nulli, sovraccarichi del buffer, ecc. Per distribuire le librerie, garantire l'assemblaggio e gestire le dipendenze, il progetto sta sviluppando il gestore di pacchetti Cargo. Il repository crates.io è supportato per ospitare le librerie.

Principali innovazioni:

  • Aggiunta la possibilità di utilizzare macro simili a funzioni all'interno degli attributi (macro procedurali e macro create utilizzando la macro “macro_rules!”). Tali macro si distinguono dalle funzioni dal simbolo “!” dopo il nome (macro!(...)) e sostituendo il testo sorgente della macro invece di generare una chiamata di funzione. Chiamare macro all'interno degli attributi può essere utile per includere contenuto di altri file nella documentazione dei commenti. Ad esempio, per inserire il contenuto del file README e il risultato dell'esecuzione dello script, è possibile specificare: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod generato;
  • Le funzioni integrate del compilatore (Intrinsics) per la piattaforma wasm32 sono state stabilizzate, consentendo l'uso delle istruzioni SIMD in WebAssembly. La maggior parte delle funzioni, come v128_bitselect, sono disponibili in modalità "sicura", ma alcune funzioni che funzionano con i puntatori (ad esempio v128_load) rimangono "non sicure".
  • È tornato l'uso predefinito della compilazione incrementale, consentendo di ricostruire solo le parti modificate del codice, il che può ridurre significativamente il tempo necessario per creare un progetto durante la ricompilazione dopo aver apportato modifiche minori. La compilazione incrementale è stata disabilitata nella versione 1.52.1 a causa di bug nascosti emersi dopo l'aggiunta di un controllo aggiuntivo per il caricamento dei dati dalla cache del disco.
  • Una nuova porzione di API è stata trasferita nella categoria stabile, tra cui le seguenti stabilizzate:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arco::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::punto_partizione
  • Aggiunte opzioni all'albero da carico: “—prune " per rimuovere un pacchetto dal grafico delle dipendenze, "-depth" per visualizzare solo gli elementi di un dato livello di annidamento nell'albero delle dipendenze, "-edges no-proc-macro" per nascondere le dipendenze delle macro procedurali.

Fonte: opennet.ru

Aggiungi un commento