Rilascio del linguaggio di programmazione Rust 1.52

È stata pubblicata la versione del linguaggio di programmazione di sistema Rust 1.52, 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:

  • Rimosso il vincolo all'ordine di esecuzione dei comandi “cargo check” e “cargo clippy”. In precedenza, la chiamata a "cargo clippy" dopo "cargo check" non avviava l'utilità clippy (linter) a causa della mancanza di separazione della cache per queste modalità di controllo. Ora questo problema è stato risolto e l’ordine in cui vengono chiamati “cargo clippy” e “cargo check” non ha più importanza.
  • Una nuova porzione dell'API è stata trasferita alla categoria stabile, inclusi i seguenti metodi che sono stati stabilizzati:
    • Argomenti::as_str
    • carattere::MAX
    • char::REPLACEMENT_CHARACTER
    • char::VERSIONE_UNICODE
    • char::decode_utf16
    • char::da_cifra
    • char::from_u32_non selezionato
    • char::da_u32
    • slice::punto_partizione
    • str::rsplit_once
    • str::split_once
  • L'attributo “const”, che determina la possibilità di utilizzarlo in qualsiasi contesto al posto delle costanti, viene utilizzato nei metodi:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Aggiunto lint check unsafe_op_in_unsafe_fn per determinare se il codice non sicuro utilizzato nelle funzioni non sicure è inquadrato da blocchi non sicuri.
  • È consentito eseguire il cast di puntatori modificabili agli array sotto forma di puntatori al tipo dell'elemento dell'array. lascia mut x: [usa; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • 9 nuovi controlli sono stati aggiunti a clippy (linter).
  • Il gestore dei pacchi cargo ora supporta il campo “manifest_path” in JSON per i pacchi. Aggiunto il supporto per specificare le informazioni sulla licenza in formato SPDX 3.11 al repository crates.io.
  • È consentito specificare più filtri durante l'esecuzione dei test, ad esempio l'esecuzione di "cargo test - foo bar" eseguirà tutti i test corrispondenti alle maschere "foo" e "bar".
  • Il toolkit LLVM predefinito è stato aggiornato a LLVM 12.
  • Il terzo livello di supporto è stato implementato per le piattaforme s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl e powerpc-unknown-openbsd. Il terzo livello prevede il supporto di base, ma senza test automatizzati, pubblicazione di build ufficiali o verifica se il codice può essere creato.

Fonte: opennet.ru

Aggiungi un commento