A fost lansată versiunea 1.92 a limbajului de programare Rust, inițial dezvoltat de Mozilla, dar acum susținut de organizația independentă și nonprofit Rust Foundation. Limbajul se concentrează pe un management sigur al memoriei și oferă instrumente pentru a obține un grad ridicat de paralelism în execuția sarcinilor, fără a utiliza un garbage collector și runtime (runtime se rezumă la inițializarea de bază și menținerea bibliotecii standard).
Metodele de gestionare a memoriei în Rust scutesc dezvoltatorul de erori în manipularea pointerilor și protejează împotriva problemelor care apar din lucrul de nivel scăzut cu memoria, cum ar fi accesarea unui spațiu de memorie după ce acesta a fost eliberat, dereferința pointerilor nuli, depășirea limitelor buffer-ului etc. Pentru distribuirea bibliotecilor, asigurarea construirii și gestionarea dependențelor, se dezvoltă managerul de pachete Cargo. Pentru găzduirea bibliotecilor, suportul este oferit prin intermediul repository-ului crates.io.
Lucrul sigur cu memoria este asigurat în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectelor, luarea în considerare a timpului de viață al obiectelor (domeniul de vizibilitate) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, instrumente pentru protejarea împotriva suprasaturării numerice, impune inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică conceptul de referințe și variabile imutabile (immutable) din oficiu și oferă o tipizare statică puternică pentru a minimiza erorile logice.
Noutăți principale:
- Stabilizarea tipului „never”, desemnat prin simbolul „!”, care definește calcule care nu returnează niciodată valori (de exemplu, funcția „exits”, macro-ul „panic!” și buclele infinite nu returnează niciodată controlul), a fost continuată. În noua versiune, verificările Lint „never_type_fallback_flowing_into_unsafe” și „dependency_on_unit_never_type_fallback” sunt, în mod implicit, trecute de la avertismente la generarea erorilor de compilare. Aceste verificări se activează în prezența problemelor din cod, care se manifestă prin utilizarea tipului „never.”
Conform estimărilor preliminare, astfel de probleme există în aproximativ 500 de pachete crate. Activarea verificărilor lint va ajuta la pregătirea pentru stabilizarea tipului „never”, care este, deocamdată, considerat o caracteristică experimentală. Verificările lint se activează doar la compilarea directă a pachetelor și nu se manifestă la compilarea dependențelor. Verificările pot fi de asemenea dezactivate prin atributul „#[allow]”.
- Comportamentul verificării lint „unused_must_use” a fost modificat. Aceasta se activează atunci când se ignoră valoarea returnată de o funcție, dacă funcția sau tipul returnat sunt marcate cu atributul „#[must_use]”. În noua versiune, avertismentele privind ignorarea valorilor returnate cu tipurile Result și ControlFlow, în care starea de eroare este definită de un tip fără valori („!” sau „Infallible”), nu mai sunt afișate. De exemplu, „fn can_never_fail() -> Result {…}.”
- Comportamentul flag-ului „-Cpanic=abort” a fost schimbat. Atunci când este specificat, se activează generarea implicită a tabelelor unwind pentru efectuarea de backtrace. Pentru a reveni la comportamentul anterior, este disponibilă opțiunea „-Cforce-unwind-tables=no”.
- Verificarea argumentelor atributului „#[macro_export]” a fost întărită. Acum, în cazul specificării unor atribute nepermise, va fi generată o eroare, nu un avertisment. Problemele cu „#[macro_export]” vor fi verificate nu doar la compilarea directă a unui pachet crate, ci și la compilarea dependențelor.
- În codul safe este permisă obținerea de pointeri raw («&raw [mut | const]») la câmpuri în tipuri union.
- Pentru platforma țintă mips64el-unknown-linux-muslabi64 a fost implementat suportul pentru legarea dinamică.
- Versiunea minimă acceptată a instrumentului extern LLVM a fost ridicată la ramura LLVM 20.
- O nouă porțiune de API a fost transformată în stabilitate, inclusiv metode și implementări ale tiparelor stabilize.
- NonZero::div_ceil
- Location::file_as_c_str
- RwLockWriteGuard::downgrade
- Box::new_zeroed
- Box::new_zeroed_slice
- Rc::new_zeroed
- Rc::new_zeroed_slice
- Arc::new_zeroed
- Arc::new_zeroed_slice
- btree_map::Entry::insert_entry
- btree_map::VacantEntry::insert_entry
- impl Extend for proc_macro::TokenStream
- impl Extend for proc_macro::TokenStream
- impl Extend for proc_macro::TokenStream
- impl Extend for proc_macro::TokenStream
- Semnul „const” aplicat în funcții:
- ::rotate_left
- ::rotate_right
- În managerul de pachete Cargo este asigurată repetarea operației «git fetch» în caz de eșec al primei cereri. Au fost adăugate componente pentru integrarea cu emulatorul de terminal Ghostty. S-a adăugat un nou capitol în manual referitor la optimizarea procesului de compilare.
Ayrton Muñoz, care a implementat suport pentru platforma Sony PlayStation 1 în compilatorul Rust și a lucrat la portarea FreeBSD pe computere cu cipuri Apple Silicon, a realizat pentru FreeBSD posibilitatea de a crea componente de kernel și drivere de dispozitive în limbajul Rust. Pentru testare, a fost propus un set de KPI-uri (Kernel Programming Interface), care permite utilizarea codului Rust în kernelul FreeBSD, precum și driverul audio virtio (virtio_snd) creat folosind aceste legături, driverul HID DockChannel pentru tastatură în M2 MacBook și câteva drivere de nivel inferior pentru subsistemele computerelor Mac cu cipuri Apple Silicon.
- Compania Ferrocene a anunțat finalizarea certificării IEC 61508 (SIL 2) pentru biblioteca libcore, care include un subset de apeluri din biblioteca de bază standard Rust. Certificarea confirmă că biblioteca respectă cerințele pentru sisteme industriale critice. Compania Ferrocene este cunoscută pentru dezvoltarea uneltelor pentru aplicații critice pe limbajul Rust, precum și pentru menținerea specificației FLS (Ferrocene Language Specification), pe baza căreia se dezvoltă specificația de referință pentru limbajul Rust.
- A fost lansată versiunea 0.14 a bibliotecii Iced pentru crearea interfețelor grafice de utilizator folosind modelul de programare reactivă. Iced implementează o arhitectură familiară dezvoltatorilor care cunosc limbajul de construcție declarativă a interfețelor Elm. Oferă un set complet de widgeturi cu posibilitatea de a crea handleri asincroni și de a aplica o compunere adaptivă a elementelor interfeței în funcție de dimensiunea ferestrei și a ecranului. Sunt disponibile mai multe motoare de redare care suportă Vulkan, Metal și DX12. Dintre proiectele mari care utilizează Iced, se poate menționa mediu de birou COSMIC.
Noua versiune include widgeturi precum „table”, „grid”, „sensor”, „float” și „pin”, precum și funcționalități extinse pentru widgetul destinat lucrului cu markup Markdown. Au fost implementate: modul de redare reactivă; bare de derulare apărute la nevoie; API pentru lucrul cu animația; suport pentru metode de input; mod headless; posibilitatea de a face modificări fără a opri aplicația (hot reloading); decodarea imaginilor în paralel; unelte pentru depanare și profilarea performanței.
- Proiectul Ribir dezvoltă o bibliotecă pentru crearea de aplicații multiplatformă cu interfață grafică, permițând utilizarea unei singure baze comune de cod pentru generarea de aplicații grafice pentru diferite platforme (Linux, Windows, macOS, cu planuri pentru Android și iOS). Este disponibil un limbaj declarativ pentru construirea interfeței bazat pe macro-uri Rust, peste 20 de widgeturi, teme de design și un sistem de redare bazat pe wgpu.
- A fost prezentată utilitarul Island, destinat lansării izolate a aplicațiilor. Pentru izolarea sandbox este utilizat mecanismul Landlock. Island permite crearea de reguli în format TOML și aplicarea lor pentru izolarea executabilelor existente folosind Landlock, fără a necesita modificări în cod. Spre deosebire de Firejail, utilitarul Island nu necesită drepturi de root și permisiuni speciale.
- Compania Google a lansat un instrumentar scris în Rust, numit Wasefire, pentru dezvoltarea de firmware-uri securizate. Ideea principală este de a rula, deasupra mediului de bază al firmware-ului (platformelor), gestionari izolați (appleți). Dezvoltarea firmware-ului nu este legată de limbajele de programare — componentele firmware-ului pot fi livrate sub formă de WebAssembly cu extensii WASI (WebAssembly System Interface) și pot fi executate folosind Wasmtime.
- A fost publicat un nou release al firmware-ului UEFI Patina 18, scris în Rust. Patina oferă o alternativă pentru componentele de bază ale firmware-ului UEFI și poate fi utilizat pentru a face tranziția treptată a firmware-urilor existente scrise în C către utilizarea limbajului Rust.
- Proiectul Brimstone dezvoltă un nou motor JavaScript, scris de la zero în Rust. În forma sa actuală, motorul suportă deja peste 97% din funcționalitățile ECMAScript 2026. Mașina virtuală pentru executarea bytecode-ului a fost creată având în vedere arhitectura motorului V8.
- Proiectul Catten dezvoltă un nucleu pentru un sistem de operare experimental CharlotteOS, scris în Rust. Nucleul suportă gestionarea accesului bazată pe «capability» (similar cu Fuchsia) și utilizează o ierarhie distribuită de resurse asemănătoare cu Plan 9, cu adresare a căilor fișierelor prin URI.
- A fost publicat release-ul interfeței interactive Fish 4.2.0 (friendly interactive shell). Ramura 4.x se remarcă printr-o traducere completă a codului sursă din C++ în Rust.
- Compania Cloudflare a deschis codul bibliotecii Rust tokio-quiche, pentru a încorpora suport pentru protocoalele QUIC și HTTP/3 în aplicații asincrone bazate pe framework-ul Tokio.
- Proiectul Tor a publicat versiunile Arti 1.7 și 1.8, implementări ale instrumentelor Tor, scrise în Rust. Când codul Arti va ajunge la un nivel capabil să înlocuiască complet versiunea în C, dezvoltatorii Tor intenționează să acorde Arti statutul de implementare principală Tor și să întrerupă treptat suportul pentru versiunea în C.
În noua versiune a fost stabilizată implementarea definițiilor limitate ale serviciilor onion cu utilizarea autorizării clientului („restricted-discovery”). Pe lângă proxy-ul SOCKS, a fost adăugată suportul pentru un proxy HTTP care utilizează metoda CONNECT. Au fost implementate timeout-uri adaptive, în funcție de încărcătură. A fost adăugat suport experimental pentru tokio-console. A continuat dezvoltarea funcționalităților pentru relee și servere directoare (Directory Authority). A fost adăugată o comandă „arti hsc ctor-migrate” pentru a transfera cheile din clientul C în stocarea cheilor Arti. Au fost adăugate setări pentru gestionarea pornirii serviciilor onion.
- A fost publicat SGBD RustDB, creat în Rust, inspirat de PostgreSQL. Sunt suportate operațiuni SQL de bază (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), tranzacții, MVCC, WAL (Write-Ahead Log), indecși, conectare prin protocol compatibil PostgreSQL. La crearea RustDB a fost utilizat AI.
Sursa: opennet.ro
