Rilascio del linguaggio di programmazione Rust 1.55

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

  • Il gestore pacchetti Cargo ha la capacità di unire errori e avvisi duplicati che si verificano durante una compilazione. Quando si eseguono comandi come "cargo test" e "cargo check --all-targets" che danno come risultato più build di un pacchetto con parametri diversi, all'utente ora viene mostrato un riepilogo del verificarsi di un problema ripetuto, invece di essere mostrato più avvisi identici quando si crea ripetutamente la stessa cosa.file. $ cargo +1.55.0 check —all-targets Controllo foo v0.1.0 attenzione: la funzione non viene mai utilizzata: 'foo' —> src/lib.rs:9:4 | 9| fn foo() {} | ^^^ | = nota: '#[warn(dead_code)]' attivo per impostazione predefinita avviso: 'foo' (lib) ha generato 1 avviso avviso: 'foo' (lib test) ha generato 1 avviso (1 duplicato) Obiettivo dev [non ottimizzato + debuginfo] terminato (s)in 0.84 s
  • Il codice di analisi in virgola mobile nella libreria standard è stato spostato per utilizzare l'algoritmo Eisel-Lemire più veloce e accurato, che ha risolto alcuni problemi osservati in precedenza con l'arrotondamento e l'analisi di numeri con un numero molto elevato di cifre.
  • È stata stabilizzata la possibilità di specificare intervalli non chiusi nei modelli (“X..” viene interpretato come un intervallo che inizia con il valore X e termina con il valore massimo del tipo intero): corrisponde a x come u32 { 0 => println! (“zero!”), 1.. => println!("numero positivo!"), }
  • Varianti di errore estese coperte da std::io::ErrorKind (classifica gli errori in categorie come NotFound e IuldBlock). In precedenza, gli errori che non rientravano nelle categorie esistenti rientravano nella categoria ErrorKind::Other, utilizzata anche per errori nel codice di terze parti. Ora esiste una categoria interna separata ErrorKind::Uncategorized per gli errori che non rientrano nelle categorie esistenti e la categoria ErrorKind::Other è limitata agli errori che non si verificano nella libreria standard (funzioni della libreria standard che restituiscono io::Error non utilizzare più la categoria ErrorKind:: Altro).
  • Una nuova porzione dell'API è stata spostata nella categoria stabile, inclusi i metodi e le implementazioni dei tratti sono stati stabilizzati:
    • Vincolato::clonato
    • Scarico::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • ForseUninit::assume_init_mut
    • ForseUninit::assume_init_ref
    • ForseUninit::write
    • array::mappa
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Nel metodo str::from_utf8_unchecked viene utilizzato l'attributo “const”, che determina la possibilità di utilizzarlo in qualsiasi contesto al posto delle costanti.
  • Il terzo livello di supporto è stato implementato per la piattaforma powerpc64le-unknown-freebsd. 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