Rilascio del linguaggio di programmazione Rust 1.43

pubblicato rilascio del linguaggio di programmazione del sistema Ruggine 1.43fondato 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 libera lo sviluppatore dalla manipolazione dei puntatori e protegge dai problemi derivanti dalla manipolazione della memoria di basso livello, come accessi alla memoria after-free, dereferenziazioni di puntatori nulli, sovraccarichi del buffer e simili. È in fase di sviluppo un gestore di pacchetti per distribuire le librerie, garantire l'assemblaggio e gestire le dipendenze del progetto. 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:

  • Le macro offrono la possibilità di utilizzare frammenti di elementi per trasformarli in codice per tratti (trait), implementazioni (impl) o blocchi esterni. Per esempio:

    macro_regole! tratto_mac {
    ($i:articolo) => {
    tratto T { $i }
    }
    }
    mac_trait! {
    fn pippo() {}
    }

    Porterà alla generazione:

    tratto T {
    fn pippo() {}
    }

  • Miglioramento del rilevamento del tipo di primitive, riferimenti e operazioni binarie.
    Ad esempio, il seguente codice, che in precedenza causava un errore, ora potrà essere compilato (Rust ora determina correttamente che 0.0 e &0.0 devono essere di tipo f32):

    sia n: f32 = 0.0 + &0.0;

  • Una nuova variabile d'ambiente CARGO_BIN_EXE_{name} è stata aggiunta a Cargo, che viene impostata durante la creazione di test di integrazione e consente di determinare il percorso completo del file eseguibile definito nella sezione "[[bin]]" del pacchetto.
  • Le istruzioni If possono utilizzare attributi come "#[cfg()]".
  • La libreria offre la possibilità di utilizzare le costanti associate direttamente per i tipi interi e frazionari, senza importare un modulo. Ad esempio, puoi scrivere immediatamente u32::MAX o f32::NAN senza prima specificare "use std::u32" e "use std::f32".
  • Nuovo modulo aggiunto primitivo, che riesporta i tipi primitivi di Rust, ad esempio quando è necessario scrivere una macro e assicurarsi che i tipi non siano nascosti.
  • Una nuova porzione dell'API è stata trasferita nella categoria stabile, compresa quella stabilizzata

    Una volta::è_completato,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 e
    iter::una_volta_con.

Fonte: opennet.ru

Aggiungi un commento