Rilascio del linguaggio di programmazione Rust 1.44

pubblicato rilascio del linguaggio di programmazione del sistema Ruggine 1.44fondato 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.

Nel testo dell'annuncio della nuova versione, gli sviluppatori di Rust si sono coinvolti nella politica e si sono rifiutati con aria di sfida di pubblicare una recensione completa dei cambiamenti in Rust 1.44 in solidarietà con i manifestanti contro la violenza della polizia, indicando che questa questione è più importante della scambio di conoscenze tecniche. Principale innovazioni:

  • Il comando "cargo tree" è integrato nel gestore di pacchetti Cargo, che visualizza un grafico delle dipendenze ad albero. Aggiunta anche l'opzione "--duplicates" ("cargo tree -d"), che consente di valutare le dipendenze in diverse versioni dello stesso pacchetto.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammoniaca v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── registro v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── sifasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [dipendenze-build] │ │ │ └── version_check v0.1.5
    ...

  • Per le applicazioni non vincolate a std ("#![no_std]") è implementato il supporto ai metodi di programmazione asincrona basati sulla funzione "async", sul blocco async move { ... } e sull'operatore ".await", che semplifica la scrittura del flusso di comandi principale dei gestori non bloccanti.
  • Al parser è stato aggiunto il supporto per uno schema di definizione della gerarchia dei moduli estensibile. Ad esempio, il seguente costrutto non produrrà un errore, nonostante l'effettiva assenza del modulo "foo/bar/baz.rs" (semanticamente, il costrutto non è ancora valido e potrebbe causare un errore, ma le modifiche possono essere viste e analizzate a livello macro e compilazione condizionale):

    #[cfg(FALSO)] mod foo {
    barra mod {
    modbaz;
    }
    }

  • Il compilatore rusticc ha aggiunto la possibilità di utilizzare il flag "-C codegen-units" in modalità incrementale. L'implementazione di catch_unwind è stata riprogettata e ora non influisce sulle prestazioni se il processo di rimozione è disabilitato e non vengono generate eccezioni.
  • Fornito supporto di terzo livello per le piattaforme aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos e x86_64-apple-tvos. Il terzo livello implica il supporto di base, ma senza test automatizzati e pubblicazione di build ufficiali.
  • Una nuova porzione dell'API è stata trasferita nella categoria stabile, compresa quella stabilizzata
    PathBuf::con_capacità,
    PathBuf::capacità,
    PathBuf::chiaro,
    PathBuf::riserva,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_non controllato,
    Layout::allinea_a
    Layout::pad_to_align,
    Layout::array e
    layout::estendere.

  • Funzioni estese della libreria standard:
    • Aggiunta una variante speciale di "vec![]" riflessa direttamente in Vec::new(), consentendo di utilizzare "vec![]" nel contesto anziché nelle costanti.
    • Implementazione del tratto (impl) aggiunta a convert::Infallible Hash.
    • OsString implementa puntatori intelligenti DerefMut и IndexMut, restituendo "&mut OsStr".
    • Aggiunto il supporto per Unicode 13.
    • Implementato in String Da<&mutstr>.
    • Caratteristica implementata in IoSlice Copia.
    • Vec implementato Da<[T; N]>.
    • proc_macro::LexError implementa fmt::Display ed Error.
  • L'attributo "const", che determina la possibilità di utilizzo in qualsiasi contesto al posto delle costanti, viene utilizzato nei metodi from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes e to_ne_bytes per tutti i tipi interi.
  • Aggiunto il supporto per la generazione di librerie statiche in formato ".a" anziché ".lib" per piattaforme GNU per Windows.
  • I requisiti minimi per LLVM sono stati aumentati a LLVM 8.

Fonte: opennet.ru

Aggiungi un commento