Lingua di prugrammazione Rust versione 1.36

publicatu liberazione di lingua di prugrammazione di u sistema Ruggine 1.36, 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 un altu parallelismu di u travagliu senza usà un cullettore di basura o runtime.

A gestione automatica di a memoria di Rust libera u sviluppatore da a manipulazione di u puntatore è prutegge da i prublemi derivanti da a manipulazione di a memoria di livellu bassu, cum'è l'accessu à a memoria dopu, i dereferences di puntatori nulli, i buffer overruns, è simili. 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.

menu innovazioni:

  • Trattu stabilizatu Future, chì rapprisenta un valore chì l'evaluazione ùn pò ancu esse cumpletata mentre utilizate blocchi async / .await. I valori asincroni definiti cù u futuru facenu pussibule di cuntinuà à eseguisce u travagliu utile in u filu, mentre aspittendu simultaneamente a cumpleta di i calculi di un certu valore;
  • Biblioteca stabilizzata alloc, chì furnisce puntatori intelligenti è cullezzione per a gestione di i valori attribuiti in memoria. L'allocazione di memoria in std usa avà u tipu Una cosa, chì sò riesportati da alloc. L'usu separatu di alloc hà sensu in l'applicazioni micca ligati à std ("#![no_std]"), è ancu in biblioteche pensate per l'usu in prugrammi simili senza std;
  • Per annullà i cuntrolli per l'inizializazione curretta di i valori prupostu tipu intermediu Forse Unità, chì pò esse usatu invece di a funzione mem::uninitialized cum'è una alternativa più sicura. A funzione mem::uninitialized hè cunvene per creà rapidamente arrays, ma inganna u compilatore perchè pare avè inizializatu, ma in realtà u valore resta micca inizializatu. MaybeUninit vi permette di indicà esplicitamente à u compilatore chì u valore ùn hè micca inizializatu, per piglià in contu u pussibuli cumportamentu indefinitu assuciatu cù questu, è ancu per urganizà cuntrolli in i prugrammi attraversu "forse_t:" è l'inizializazione passu à passu, marchendu a so cumpleta. usendu a chjama ".assume_init()". Cù l'avventu di MaybeUninit, a funzione mem::uninitialized hè stata deprecata è ùn hè micca cunsigliatu per l'usu;
  • A tecnica NLL (Non-Lexical Lifetimes), chì hà allargatu u sistema per a registrazione di a vita di variabili prestiti, hè stata stabilizzata per a lingua Rust 2015 (inizialmente, NLL era supportatu solu da Rust 2018). Invece di cumminà a vita à u nivellu lessicale, NLL faci cusì à u livellu di l'inseme di puntatori in u graficu di u flussu di esecutivu. Stu approcciu vi permette di aumentà a qualità di cuntrollà u prestitu di variàbili (prestitu verificatore) è permette l'esekzione di certi tipi di codice currettu, l'usu di quale prima hà purtatu à un errore. U novu cumpurtamentu faci ancu debugging assai più faciule;
  • A nova implementazione di arrays associative inclusa HashMap, basatu annantu à l'applicazione di a struttura Table svizzera (caricatu automaticamente hashbrown::HashMap, salvu chì esplicitamente dichjarà altrimenti, cum'è std::HashMap, chì hè basatu annantu à SipHash 1-3). L'interfaccia di u software ferma a listessa, è e differenze notevuli à u sviluppatore si riducenu à un rendimentu aumentatu è u cunsumu di memoria ridutta;
  • In u pacchettu gestore di carica aghjustatu l'opzione "--offline", chì permette u funziunamentu senza accede à a reta, in quale solu i pacchetti cache in u sistema lucale sò usati per installà dipendenze. Se a dependenza ùn hè micca in u cache lucale, un errore serà ghjittatu. Per precaricate dipendenze in u cache lucale prima di andà offline, pudete aduprà u cumandimu "cargo fetch";
  • Implementatu a capacità di chjamà a macro "dbg!" indicà parechji argumenti;
  • L'attributu "const", chì determina a pussibilità di utilizà in ogni cuntestu invece di custanti, hè utilizatu per i metudi.
    Layout::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::pencing è
    NonNull::cast;

  • Una nova parte di l'API hè stata trasferita à a categuria stabile, cumprese i metudi chì sò stati stabilizati
    task::Waker, task::Poll,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Read::read_vectored, Scrive::write_vectored,
    Iterator::copiatu,
    BorrowMut (per stringhe) è str::as_mut_ptr.

Source: opennet.ru

Add a comment