Lingua di prugrammazione Rust versione 1.65

A liberazione di a lingua di prugrammazione Rust 1.65 generale, fundata da u prughjettu Mozilla, ma avà sviluppata sottu à l'auspices di l'urganizazione indipendente Rust Foundation, hè stata publicata. A lingua si focalizeghja nantu à a sicurità di a memoria è furnisce i mezi per ottene un altu parallelismu di u travagliu evitendu l'usu di un cullizzioni di basura è runtime (u runtime hè ridutta à l'inizializazione basica è u mantenimentu di a biblioteca standard).

I metudi di gestione di a memoria di Rust salvanu u sviluppatore da l'errore quandu manipulanu i puntatori è prutegge da i prublemi chì si sviluppanu per via di a gestione di memoria di pocu livellu, 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 prughjettu sviluppa u gestore di pacchetti Cargo. U repository crates.io hè supportatu per l'ospitu di biblioteche.

A sicurezza di a memoria hè furnita in Rust à u tempu di compilazione attraversu a verificazione di riferimentu, u seguimentu di a pruprietà di l'ughjettu, a traccia di a vita di l'ughjettu (scopi), è a valutazione di a correttezza di l'accessu di memoria durante l'esekzione di codice. Rust furnisce ancu prutezzione contra i overflows integer, esige l'inizializazione obligatoria di i valori variabili prima di l'usu, gestisce l'errori megliu in a biblioteca standard, applica u cuncettu di referenze immutabili è variabili per difettu, offre una forte tipografia statica per minimizzà l'errori lògichi.

Innuvazioni principali:

  • Aghjunghje un supportu per i tipi associati generici (GAT, Generic Associated Types), chì permettenu di creà alias di tipu associati à un altru tipu è permettenu di associà i constructori di tipu cù caratteristiche. trait Foo { tipu Bar<'x>; }
  • L'espressione "let ... else" hè stata implementata, chì vi permette di verificà a cundizione di currispondenza di u mudellu direttamente in l'espressione "let" è eseguisce codice arbitrariu se u mudellu ùn currisponde micca. lasciate Ok (count) = u64::from_str (count_str) else { panic! ("Ùn pò micca analizà integer: '{count_str}'"); };
  • Permette l'usu di una dichjarazione di pausa per esce da i blocchi chjamati prematuremente, utilizendu u nome di u bloccu (etichetta) per identificà u bloccu per esse terminatu. let result = 'block: { do_thing (); if condition_not_met () { break 'block 1; } do_next_thing (); if condition_not_met () { break 'block 2; } fà_l'ultima_cosa (); 3};
  • Per Linux, a capacità di salvà separatamente l'infurmazioni di debugging (split-debuginfo), prima dispunibule solu per a piattaforma macOS, hè stata aghjunta. Quandu si specifica l'opzione "-Csplit-debuginfo=unpacked", i dati di debuginfo in formatu DWARF seranu salvati in parechji schedarii d'ughjettu separati cù una estensione ".dwo". Specificà "-Csplit-debuginfo=packed" creà un solu pacchettu in formatu ".dwp" chì include tutte e dati di debuginfo per u prugettu. Per integrà debuginfo direttamente in a sezione .debug_* di l'oggetti ELF, pudete aduprà l'opzione "-Csplit-debuginfo=off".
  • 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::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • L'attributu "const", chì determina a pussibilità di usà in ogni cuntestu invece di custanti, hè utilizatu in e funzioni <*const T&>::offset_from è <*mut T>::offset_from
  • Comu parte di l'ultima tappa di trasferimentu di l'implementazione di u protocolu LSP (Language Server Protocol) à rust-analyzer, l'implementazione obsoleta di Rust Language Server (RLS) hè stata rimpiazzata cù un servitore stub chì emette un avvisu cù un suggerimentu per cambià à utilizendu l'analizzatore di ruggine.
  • Durante a compilazione, u supportu per l'implementazione in linea di u codice intermediu MIR hè attivatu, chì accelera a compilazione di pacchetti tipici di crate da 3-10%.
  • Per accelerà e custruzzioni pianificate, u gestore di pacchetti Cargo furnisce l'ordinamentu di i travaglii in attesa di eseguisce in a fila.

Inoltre, pudete nutà l'entrevista annantu à l'usu di a lingua Rust à Volvo per sviluppà cumpunenti di sistemi d'infurmazione di l'automobile. Ùn ci hè micca previstu di riscrive u codice esistente è pruvatu in Rust, ma per u novu codice, Rust hè una di l'opzioni preferite per migliurà a qualità à i costi più bassi. Gruppi di travagliu ligati à l'usu di a lingua Rust sò stati ancu creati in l'associazioni automobilistiche AUTOSAR (AUTomotive Open System ARchitecture) è SAE (Society of Automotive Engineers).

Inoltre, David Kleidermacher, vicepresidentu di l'ingegneria di Google, hà parlatu di a traduzzione di u codice utilizatu in a piattaforma Android per gestisce e chjave di criptografia in Rust, è ancu di l'usu di Rust in l'implementazione di u protocolu DNS over HTTPS in a pila. per UWB-chips (Ultra-Wideband) è in u quadru di virtualizazione (Android Virtualization Framework) assuciatu cù u chip Tensor G2. Nuvelle pile per Bluetooth è Wi-Fi, riscritti in Rust, sò ancu sviluppati per Android. A strategia generale hè di rinfurzà gradualmente a sicurità, prima cunvertisce i cumpunenti di u software più vulnerabile è vitale in Rust, è dopu espansione à altri sottosistemi cunnessi. L'annu passatu, a lingua Rust hè stata inclusa in a lista di lingue permesse per u sviluppu di a piattaforma Android.

Source: opennet.ru

Add a comment