Lansarea limbajului de programare Rust 1.65

A fost publicată lansarea limbajului de programare de uz general Rust 1.65, fondat de proiectul Mozilla, dar dezvoltat acum sub auspiciile organizației independente non-profit Rust Foundation. Limbajul se concentrează pe siguranța memoriei și oferă mijloacele pentru a obține un paralelism ridicat al jobului, evitând în același timp utilizarea unui colector de gunoi și a unui timp de rulare (timpul de rulare este redus la inițializarea de bază și întreținerea bibliotecii standard).

Metodele de manipulare a memoriei Rust salvează dezvoltatorul de erori la manipularea pointerilor și protejează împotriva problemelor care apar din cauza manipulării memoriei de nivel scăzut, cum ar fi accesarea unei zone de memorie după ce aceasta a fost eliberată, dereferențiarea pointerilor nuli, depășirile de buffer etc. Pentru a distribui biblioteci, a furniza versiuni și a gestiona dependențe, proiectul dezvoltă managerul de pachete Cargo. Depozitul crates.io este acceptat pentru găzduirea bibliotecilor.

Siguranța memoriei este furnizată în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectului, urmărirea duratelor de viață a obiectelor (sfere de aplicare) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică implicit conceptul de referințe imuabile și variabile, oferă tastare statică puternică pentru a minimiza erorile logice.

Principalele inovații:

  • S-a adăugat suport pentru tipurile asociate generice (GAT, Generic Associated Types), care fac posibilă crearea de aliasuri de tip asociate cu un alt tip și vă permit să asociați constructorii de tip cu trăsături. trăsătură Foo { tip Bar; }
  • Expresia „let... else” a fost implementată, permițându-vă să verificați condiția de potrivire a modelului direct în interiorul expresiei „let” și să executați cod arbitrar dacă modelul nu se potrivește. let Ok(count) = u64::from_str(count_str) else { panic!("Nu se poate analiza întreg: '{count_str}'"); };
  • Permiteți utilizarea unei instrucțiuni break pentru a ieși prematur din blocurile numite, folosind numele blocului (eticheta) pentru a identifica blocul care urmează să fie terminat. lasă rezultat = ‘blocare: { do_thing(); if condition_not_met() { break ‘blocul 1; } face_next_thing(); if condition_not_met() { break ‘blocul 2; } face_ultimul_lucru(); 3};
  • Pentru Linux, a fost adăugată capacitatea de a salva separat informațiile de depanare (split-debuginfo), disponibilă anterior doar pentru platforma macOS. Când specificați opțiunea „-Csplit-debuginfo=unpacked”, datele debuginfo în format DWARF vor fi salvate în mai multe fișiere obiect separate cu extensia „.dwo”. Specificarea „-Csplit-debuginfo=packed” va crea un singur pachet în format „.dwp” care include toate datele debuginfo pentru proiect. Pentru a integra debuginfo direct în secțiunea .debug_* a obiectelor ELF, puteți utiliza opțiunea „-Csplit-debuginfo=off”.
  • O nouă porțiune a API-ului a fost mutată în categoria de stabil, inclusiv metodele și implementările de trăsături au fost stabilizate:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este folosit în funcțiile ::offset_from și ::offset_from
  • Ca parte a etapei finale de transfer a implementării protocolului LSP (Language Server Protocol) la rust-analyzer, implementarea învechită a Rust Language Server (RLS) a fost înlocuită cu un server stub care emite un avertisment cu o sugestie de a trece la folosind analizatorul de rugină.
  • În timpul compilării, suportul pentru implementarea inline a codului intermediar MIR este activat, ceea ce accelerează compilarea pachetelor tipice cu cutii cu 3-10%.
  • Pentru a accelera versiunile programate, managerul de pachete Cargo oferă sortarea lucrărilor care așteaptă execuția în coadă.

În plus, puteți observa interviul despre utilizarea limbajului Rust la Volvo pentru a dezvolta componente ale sistemelor de informații auto. Nu există planuri de a rescrie codul existent și testat în Rust, dar pentru codul nou, Rust este una dintre opțiunile preferate pentru îmbunătățirea calității la costuri mai mici. Grupuri de lucru legate de utilizarea limbajului Rust au fost create și în asociațiile de automobile AUTOSAR (AUTomotive Open System ARchitecture) și SAE (Societatea Inginerilor Auto).

În plus, David Kleidermacher, vicepreședintele Google de inginerie, a vorbit despre traducerea codului folosit în platforma Android pentru a gestiona cheile de criptare în Rust, precum și despre utilizarea Rust în implementarea protocolului DNS peste HTTPS în stivă. pentru cipurile UWB (Ultra-Wideband) și în cadrul de virtualizare (Android Virtualization Framework) asociat cu cipul Tensor G2. Noi stive pentru Bluetooth și Wi-Fi, rescrise în Rust, sunt de asemenea dezvoltate pentru Android. Strategia generală este de a consolida treptat securitatea, mai întâi prin conversia componentelor software cele mai vulnerabile și vitale în Rust și apoi extinzându-se la alte subsisteme conexe. Anul trecut, limba Rust a fost inclusă în lista limbilor permise pentru dezvoltarea platformei Android.

Sursa: opennet.ru

Adauga un comentariu