Lingua di prugrammazione Rust versione 1.47

A versione 1.47 di a lingua di prugrammazione di u sistema Rust, fundata da u prughjettu Mozilla, hè stata publicata. A lingua fucalizza nantu à a sicurità di a memoria, furnisce una gestione automatica di a memoria, è furnisce i mezi per ottene un parallelismu elevatu di u travagliu senza aduprà un cullizzioni di basura o runtime (u runtime hè ridutta à l'inizializazione basica è u mantenimentu di a biblioteca standard).

A gestione automatica di a memoria di Rust elimina l'errore in a manipulazione di puntatori è prutegge da i prublemi derivanti da a manipulazione di memoria di livellu bassu, cum'è l'accessu à una regione di memoria dopu chì hè stata liberata, null pointer dereferences, buffer overruns, etc. Per distribuisce e biblioteche, assicurà l'assemblea è gestisce e dipendenze, u prugettu sviluppa u gestore di pacchetti Cargo. U repository crates.io hè supportatu per l'ospitu di biblioteche.

Innuvazioni principali:

  • Supportu implementatu per tratti per arrays di dimensione arbitraria. Precedentemente, per via di l'incapacità di definisce e funzioni generiche per tutti i valori interi, a biblioteca standard furnia un supportu di caratteristiche integrata solu per arrays finu à 32 elementi in dimensione (i tratti per ogni dimensione sò stati definiti staticamente). Grazie à a creazione di funziunalità const generici, hè diventatu pussibule di definisce e funzioni generiche per ogni dimensione di array, ma ùn sò micca ancu inclusi in e caratteristiche stabili di a lingua, ancu s'elli sò implementati in u compilatore è sò oghji usati in a biblioteca standard. per i tipi di array di ogni dimensione.
    Per esempiu, a custruzzione seguente in Rust 1.47 stamparà u cuntenutu di un array, ancu s'ellu prima averia risultatu in un errore:

fn main() {
sia xs = [0; 34];
println!("{:?}", xs);
}

  • Fornitu output di tracce più brevi (backtrace), output in situazioni di emergenza. Elementi chì ùn sò micca d'interessu in a maiò parte di situazione, ma clutter the output and distract attention from the primary causes of the problem, sò esclusi da a traccia. Per rinvià una traccia completa, pudete aduprà a variabile d'ambiente "RUST_BACKTRACE=full". Per esempiu, per u codice

fn main() {
panicu!();
}

Nanzu, a traccia hè stata uscita in 23 tappe, ma avà serà ridutta à 3 tappe, chì vi permette di capisce immediatamente l'essenza:

thread 'main' in panicu in 'panicu esplicitu', src/main.rs:2:5
stack backtrace:
0: std::panicking::begin_panic
à /rustc/d…d75a/library/std/src/panicking.rs:497
1: campu di ghjocu::principale
à ./src/main.rs:2
2: core::ops::funzione::FnOnce::call_once
in /rustc/d…d75a/library/core/src/ops/function.rs:227

  • U compilatore rustc hè statu aghjurnatu per custruisce cù LLVM 11 (Rust usa LLVM cum'è backend per a generazione di codice). À u listessu tempu, a capacità di custruisce cù vechji LLVM, finu à a versione 8, hè ritenuta, ma per automaticamente (in rust-lang/llvm-project) LLVM 11 hè avà utilizatu. A liberazione di LLVM 11 hè prevista in u prossimu. ghjorni.
  • Nantu à a piattaforma Windows, u compilatore rustc furnisce supportu per attivà i cuntrolli di integrità di u flussu di cuntrollu (Control Flow Guard), attivatu cù a bandiera "-C control-flow-guard". In altre piattaforme sta bandiera hè ignorata per ora.
  • Una nova parte di l'API hè stata trasferita à a categuria stabile, cumprese Ident stabilized::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU è f64::TAU.
  • L'attributu "const", chì determina a pussibilità di usà in ogni cuntestu invece di custanti, hè utilizatu in i metudi:
    • novu per tutti i numeri interi chì ùn sò micca zero;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub è saturating_mul per tutti i numeri interi;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace è is_ascii_control for char and u8 types.
  • Per FreeBSD, u toolkit da FreeBSD 11.4 hè utilizatu (FreeBSD 10 ùn sustene micca LLVM 11).

Pigliatu da opennet.ru

Source: linux.org.ru

Add a comment