Lingua di prugrammazione Rust versione 1.44

publicatu liberazione di lingua di prugrammazione di u sistema Ruggine 1.44, fundatu da u prughjettu Mozilla. A lingua si focalizeghja nantu à a sicurità di a memoria, furnisce una gestione automatica di a memoria, è furnisce strumenti per ottene un parallelismu elevatu di u travagliu senza usà un cullettore di basura è runtime.

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, chì permette di ottene e librerie necessarie per u prugramma in un clic. Un repository hè supportatu per ospitare biblioteche crates.io.

In u testu di l'annunziu di a nova liberazione, i sviluppatori di Rust s'impegnanu in a pulitica è anu ricusatu di pubblicà una rivista completa di i cambiamenti in Rust 1.44 cum'è un signu di sulidarità cù i manifestanti contr'à a viulenza di a polizia, chì indicanu chì sta questione hè più impurtante. chè u scambiu di cunniscenze tecniche. Basic innovazioni:

  • U gestore di pacchettu Cargo integra u cumandimu "cargo tree", chì mostra un gràficu di dependenza simili à l'arburu. Hè aghjuntu ancu l'opzione "-duplicates" ("cargo tree -d"), chì permette di evaluà e dependenzii in diverse versioni di u stessu pacchettu.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammonia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • Per l'applicazioni chì ùn sò micca ligati à un std ("#![no_std]"), u supportu per e tecniche di prugrammazione asincrona hè implementatu basatu annantu à a funzione "async", u bloccu async move { ... } è l'operatore ".await", chì simplificà u flussu di cummandu principali di i gestori chì ùn sò micca bloccanti.
  • U supportu per un schema di definizione di gerarchia di moduli estensibile hè statu aghjuntu à l'analizzatore. Per esempiu, a custruzzione seguente ùn pruducerà micca un errore, malgradu l'assenza attuale di u modulu "foo/bar/baz.rs" (a custruzzione hè sempre semanticamenti invalida è pò causà un errore, ma i cambiamenti ponu esse vistu è analizati à u livellu di compilazione macro è cundizionale):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • U compilatore rustc hà aghjustatu a capacità di utilizà a bandiera "-C codegen-units" in modu incrementale. L'implementazione di catch_unwind hè stata rielaborata in modu chì ùn hà micca impattu in u rendiment se u prucessu di svilatu hè disattivatu è ùn ci hè micca eccezzioni.
  • U supportu di Livellu 64 hè statu furnitu per e piattaforme aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos è x64_XNUMX-apple-tvos. U terzu livellu implica un supportu basicu, ma senza teste automatizate è publicazione di custruzzioni ufficiali.
  • Una nova parte di l'API hè stata trasferita à a categuria stabile, cumpresa stabilizzata
    PathBuf::with_capacità,
    PathBuf::capacità,
    PathBuf::clear,
    PathBuf::riserva,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array è
    Disposizione::estensione.

  • Funzioni estese di a biblioteca standard:
    • Aggiunta una variante speciale "vec![]" chì hè direttamente riflessa in Vec::new(), chì permette "vec![]" per esse usatu in cuntestu invece di custanti.
    • Una implementazione (impl) di u trattu hè stata aghjunta per cunvertisce::Infallible Hash.
    • OsString implementa puntatori intelligenti DerefMut и IndexMut, riturnendu "&mut OsStr".
    • Aggiuntu supportu per Unicode 13.
    • Implementatu in String Da<&mut str>.
    • IoSlice implementa u trattu Copy.
    • Vec implementatu Da<[T; N]>.
    • proc_macro::LexError implementa fmt::Display è Errore.
  • L'attributu "const", chì determina s'ellu pò esse usatu in ogni cuntestu invece di custanti, hè utilizatu in i metudi from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes è to_ne_bytes per tutti i tipi interi.
  • Aggiuntu supportu per a generazione di biblioteche statiche in formatu ".a" invece di ".lib" per e plataforme GNU in Windows.
  • I requisiti minimi per LLVM sò stati elevati à a versione LLVM 8.

Source: opennet.ru

Add a comment