Lingua di prugrammazione Rust versione 2021 (1.56)

A liberazione di a lingua di prugrammazione di u sistema Rust 1.56, fundata da u prughjettu Mozilla, ma avà sviluppata sottu à l'auspices di l'urganizazione indipendente Rust Foundation, hè stata publicata. In più di u numeru di versione regulare, a liberazione hè ancu marcata cum'è Rust 2021 è marca a stabilizazione di i cambiamenti pruposti in l'ultimi trè anni. Rust 2021 servirà ancu di basa per e funzioni di custruzzione in i prossimi trè anni, simile à cumu a versione Rust 2018 hè stata a basa per u sviluppu di a lingua in l'ultimi trè anni.

Per mantene a cumpatibulità, i sviluppatori ponu aduprà i tags "2015", "2018" è "2021" in i so prugrammi per ligà i prugrammi à e fette di u statu di lingua chì currispondenu à l'edizioni Rust selezziunate. E revisioni sò state introdutte per separà i cambiamenti incompatibili è sò cunfigurati in i metadati di i pacchetti di carica via u campu "edizione" in a sezione "[pacchettu]". Per esempiu, l'edizione "2018" include funziunalità stabilizzata à a fine di 2018 è copre ancu tutti i cambiamenti chì ùn violanu micca a cumpatibilità. L'edizione 2021 include ancu funzioni di rottura di cumpatibilità pruposte in a versione 1.56 attuale è appruvata per l'implementazione in u futuru. In più di a lingua stessa, l'editori piglianu ancu in contu u statu di l'arnesi è a ducumentazione.

I principali incompatibilità fissati in Rust 2021 sò:

  • Capture Separate in Closures - I Closures ponu avà catturà nomi di campi individuali invece di l'ID sanu. Per esempiu, "|| ax + 1" catturarà solu "ax" invece di "a".
  • U trattu IntoIterator per arrays: array.into_iter() permette di iterà nantu à l'elementi di un array per valore in quantu chì per riferimentu.
  • U trattamentu di l'espressioni "|" hè statu cambiatu in macro_rules (operazione logica OR) in mudelli - U specificatore ": pat" in i partiti rispettu avà i mudelli "A | B".
  • U gestore di pacchetti di carica include per automaticamente a seconda versione di u risolve di funzioni, u supportu per quale hè statu introduttu in Rust 1.51.
  • I tratti TryFrom, TryInto, è FromIterator sò stati aghjuntu à u modulu di biblioteca standard di prelude.
  • U panicu!(..) è assert!(expr, ..) macros avà sempre aduprà format_args!(..) per furmà strings, simili à println!().
  • L'espressioni ident#, ident"..." è ident'...' sò riservate in a sintassi di a lingua.
  • L'avvisi di bare_trait_objects è ellipsis_inclusive_range_patterns sò stati spustati in a categuria d'errore.

Novu in Rust 1.56:

  • In Cargo.toml, in a sezione "[pacchettu]", hè statu aghjuntu u campu di rust-version, per mezu di quale pudete determinà a versione minima supportata di Rust per u pacchettu crate. Se a versione attuale ùn currisponde à u paràmetru specificatu, Cargo aborterà cù un errore.
  • Quandu u mudellu di cunfrontu cù l'espressioni "binding @ pattern", hè furnitu supportu per specificà ligami supplementari (per esempiu, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • Una nova parte di l'API hè stata trasferita à a categuria di stabile, cumprese i metudi è l'implementazione di i tratti sò stati stabilizzati:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • L'attributu "const", chì determina a pussibilità di usà in ogni cuntestu invece di custanti, hè utilizatu in funzioni.
    • std::mem::transmute
    • [T]::prima
    • [T]::split_first
    • [T]::ultimu
    • [T]::split_last
  • U compilatore hè statu cambiatu per utilizà a versione LLVM 13.
  • Implementatu u supportu di livellu 64 per a piattaforma aarch32-apple-ios-sim è u supportu di livellu XNUMX per e plataforme powerpc-unknown-freebsd è riscvXNUMXimc-esp-espidf. U terzu livellu implica un supportu basicu, ma senza teste automatizate, pubblicà custruzzioni ufficiali è verificate a capacità di custruisce u codice.

Ricurdativi chì a lingua Rust si focalizeghja nantu à a gestione di memoria sicura, furnisce una gestione automatica di memoria, è furnisce un mezzu per ottene un parallelismu elevatu di l'execuzione di u travagliu, senza l'usu di un cullizzioni di basura è runtime (u runtime hè ridutta à l'inizializazione basica è u mantenimentu di u travagliu). libreria standard).

A gestione automatica di a memoria di Rust salva u sviluppatore da l'errore durante a manipulazione di puntatori è prutegge da i prublemi chì si sviluppanu per via di a manipulazione di memoria di livellu bassu, cum'è l'accessu à una zona di memoria dopu chì hè stata liberata, dereferencing null pointers, buffer overruns, etc. Per distribuisce biblioteche, furnisce e custruzzioni è gestisce e dipendenze, u prugettu sviluppa u gestore di pacchetti Cargo. U repository crates.io hè supportatu per e biblioteche di hosting.

Source: opennet.ru

Add a comment