Rilascio del linguaggio di programmazione Rust 1.55

È stato rilasciato il linguaggio di programmazione Rust 1.55, originariamente sviluppato da Mozilla, ma attualmente gestito dalla Rust Foundation, un'organizzazione indipendente e non profit. Questo linguaggio è focalizzato sulla gestione sicura della memoria, offre gestione automatica della memoria e fornisce strumenti per raggiungere un elevato parallelismo nell'esecuzione delle attività, senza l'uso di garbage collector e runtime (il runtime si riduce alla semplice inizializzazione e al supporto della libreria standard).

La gestione automatica della memoria in Rust solleva gli sviluppatori dagli errori nella manipolazione dei puntatori e protegge da problemi derivanti dal lavoro a basso livello con la memoria, come l'accesso a aree di memoria già liberate, la dereferenziazione di puntatori nulli, il superamento dei limiti di un buffer, ecc. Per la distribuzione delle librerie, la costruzione e la gestione delle dipendenze, è in fase di sviluppo il gestore di pacchetti Cargo. Per l'hosting delle librerie, è supportato il repository crates.io.

Novità principali:

  • Nel gestore di pacchetti Cargo è stata implementata la possibilità di unire i duplicati di errori e avvisi che si verificano durante la compilazione. Quando si eseguono comandi come 'cargo test' e 'cargo check --all-targets', che portano a compilationi multiple del pacchetto con parametri diversi, all'utente viene mostrata ora una sintesi delle problematiche ricorrenti, anziché visualizzare più avvisi identici durante la ricompilazione dello stesso file. $ cargo +1.55.0 check --all-targets Controllando foo v0.1.0 avviso: la funzione non viene mai utilizzata: 'foo' -> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nota: '#[warn(dead_code)]' di default avviso: 'foo' (lib) ha generato 1 avviso avviso: 'foo' (lib test) ha generato 1 avviso (1 duplicato) Completato dev [non ottimizzato + debuginfo] target(s) in 0.84s
  • Il codice per l'analisi dei numeri in virgola mobile nella libreria standard è stato convertito per utilizzare un algoritmo di Eisel-Lemire più veloce e preciso, la cui applicazione ha risolto alcuni problemi di arrotondamento e analisi dei numeri con un numero molto elevato di cifre osservati in precedenza.
  • È stata stabilita 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): match x as u32 { 0 => println!(«zero!»), 1.. => println!(«numero positivo!»), }
  • Ampliate le opzioni di errore coperte dal elenco std::io::ErrorKind (classifica gli errori in categorie come NotFound e WouldBlock). In precedenza, gli errori che non rientravano nelle categorie esistenti venivano classificati come ErrorKind::Other, che veniva utilizzato anche per gli errori nel codice di terzi. Ora, per gli errori non rientranti nelle categorie esistenti, è stata creata una categoria interna separata ErrorKind::Uncategorized, mentre la categoria ErrorKind::Other è ora limitata solo agli errori che si verificano al di fuori della libreria standard (le funzioni della libreria standard che restituiscono io::Error non utilizzano più la categoria ErrorKind::Other).
  • Una nuova serie di API è stata traslata nella categoria stabile, stabilizzando i metodi e le implementazioni dei tipi:
    • Bound::cloned
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::write
    • array::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Il flag «const», che determina la possibilità di utilizzo in qualsiasi contesto invece delle costanti, è stato implementato nel metodo str::from_utf8_unchecked.
  • È stato implementato il terzo livello di supporto per la piattaforma powerpc64le-unknown-freebsd. Il terzo livello implica supporto di base, ma senza test automatizzati, pubblicazione di build ufficiali e verifica della possibilità di compilazione del codice.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster