Lingua di prugrammazione Rust versione 1.47

publicatu versione 1.47 di a lingua di prugrammazione di u sistema Rust, fundatu da u prughjettu Mozilla. A lingua fucalizza nantu à a sicurità di a memoria, furnisce una gestione automatica di a memoria, è furnisce un mezzu per ottene u parallelismu di u travagliu altu senza aduprà cullettore di basura и runtime (U runtime si riduce à 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. Un gestore di pacchetti hè sviluppatu per distribuisce biblioteche, assicurà l'assemblea è gestisce e dipendenze da u prugettu. Cargo. Un repository hè supportatu per ospitare biblioteche crates.io.

menu innovazioni:

  • Supportu implementatu per i tipi arrays ogni taglia. Precedentemente, per via di l'incapacità di definisce e funzioni generiche per tutti i valori interi, a libreria standard furnia un supportu di caratteristiche integrata solu per arrays finu à 32 elementi in grandezza (i tratti per ogni dimensione sò stati stati definiti). Grazie à a creazione di e funziunalità di generichi custanti ("const generici"), hè diventatu pussibule di definisce e funzioni generiche per qualsiasi dimensione di array, ma ùn sò ancu inclusi in e caratteristiche di lingua stabile, ancu s'ellu sò implementati in u compilatore è sò avà implicatu in a biblioteca standard per i tratti 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!();
    }

    Prima, a traccia hè stata uscita in 23 tappe, ma avà serà ridutta à
    3 passi chì permettenu 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 (Ruggine usi LLVM cum'è backend per generazione di codice). À u listessu tempu, a capacità di custruisce cù LLVM più vechji, finu à a versione 8, hè conservata, ma per difettu (in rust-lang/llvm-project) hè avà aduprà LLVM 11. LLVM 11 hè previstu per esse liberatu in i ghjorni à vene.
  • In 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, cumpresa stabilizzata
    Ident::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Risultatu::as_deref,
    Risultatu::as_deref_mut,
    Vec::fuga,
    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 implicatu toolkit da FreeBSD 11.4 (FreeBSD 10 ùn sustene micca LLVM 11).

Source: opennet.ru

Add a comment