Lingua di prugrammazione Rust versione 1.37

publicatu liberazione di lingua di prugrammazione di u sistema Ruggine 1.37, 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:

  • In u compilatore rustc assicuratu supportu per l'ottimisazione basatu nantu à i risultati di prufilu di codice (PGO, Profile-Guided Optimization),
    chì permette di generà un codice più ottimale basatu annantu à l'analisi di statistiche accumulate durante l'esekzione di u prugramma. Per generà un prufilu, a bandiera "-C profile-generate" hè furnita, è per utilizà u prufilu durante l'assemblea - "-C profile-use" (inizialmente, u prugramma hè assemblatu cù a prima bandiera, corre, è dopu à creà). u prufilu, hè riunitu cù a seconda bandiera);

  • Quandu eseguisce u cumandamentu "cargo run", chì hè cunvenutu à aduprà per pruvà rapidamente l'applicazioni di cunsola, a capacità di selezziunà automaticamente un schedariu eseguibile per eseguisce hè stata aghjunta s'ellu ci sò parechji fugliali eseguibili in u pacchettu. U schedariu predeterminatu per esse eseguitu hè determinatu per mezu di a direttiva predeterminata in a sezione [pacchettu] cù i paràmetri di u pacchettu, chì vi permette di evità di specificà esplicitamente u nome di u schedariu attraversu a bandiera "-bin" ogni volta chì eseguite "cargo run";
  • U cumandamentu "venditore di carica", furnitu prima cum'è pacchettu separatu. U cumandamentu vi permette di urganizà u travagliu cù una copia lucale di dependenzii - dopu avè esecutatu "venditore di carica", tutti i codici fonte di e dependenzii di u prugettu sò scaricati da crates.io à un repertoriu lucale, chì pò esse usatu per u travagliu senza accede à e casse. io (dopu à eseguisce u cumandimu, un suggerimentu per cambià a cunfigurazione hè mostratu per utilizà u repertoriu per e custruzzioni). Questa funzione hè digià aduprata per urganizà a consegna di u compilatore rustc cù l'imballazione di tutte e dependenzii in un archiviu cù a liberazione;
  • Avà hè pussibule di creà ligami à l'opzioni enum usendu alias di tipu (per esempiu, in u corpu di a funzione "fn increment_or_zero(x: ByteOption) pudete specificà "ByteOption::None => 0"), tippi custruzzioni di calculu (‹ MyType‹.. ››::option => N) o Self accesses (in blocchi c &self pudete specificà "Self::Quarter => 25");
  • Aggiunta a capacità di creà custanti senza nome in macros. Invece di definisce u nome di l'elementu in "const", pudete avà aduprà u caratteru "_" per selezziunà dinamicamente un identificatore chì ùn si ripetì, evitendu cunflitti di nomi quandu chjamate a macro;
  • Aggiunta l'abilità di utilizà l'attributu "#[repr(align(N))" cù enums chì utilizanu una sintassi simile à definisce una struttura AlignN‹T› cun allineamentu è dopu utilizendu AlignN‹MyEnum›;
  • Una nova parte di l'API hè stata spustata à a categuria stabile, cumprese BufReader::buffer, BufWriter::buffer, è
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opzione::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits e
    slice::copy_within.

Inoltre, pò esse nutatu principiu di a prova u prughjettu Async-std, chì offre una variante asincrona di a libreria standard Rust (un portu di a libreria std, in quale tutte l'interfaccia sò offerte in una versione async è sò pronti per l'usu cù a sintassi async/wait).

Source: opennet.ru

Add a comment