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.
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".
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.