A fost publicat release-ul limbajului de programare Rust 1.94, dezvoltat inițial de Mozilla, dar acum gestionat sub egida unei organizații independente, non-profit, Rust Foundation. Limbajul se concentrează pe utilizarea sigură a memoriei și oferă instrumente pentru a atinge un înalt grad de paralelism în execuția sarcinilor, fără a necesita un garbage collector și în timp de execuție (runtime se limitează la inițializarea de bază și la gestionarea bibliotecii standard).
Metodele de gestionare a memoriei în Rust sunt orientate spre eliminarea erorilor în manipularea pointerilor și protejarea împotriva problemelor care apar din lucrul la nivel de memorie, cum ar fi accesarea unei zone de memorie după eliberarea ei, dereferentierea pointerilor nuli, depășirea limitelor buffer-ului etc. Pentru distribuirea bibliotecilor, asigurarea compilării și gestionarea dependențelor, proiectul se dezvoltă cu ajutorul managerului de pachete Cargo. Un depozit pentru biblioteci este susținut la 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:
- Tipul slice a primit metoda array_windows, care creează un iterator pentru a parcurge slice-urile ‘feronete’ de dimensiune fixă, deplasându-se câte un element pe rând. Spre deosebire de metoda anterioară windows, metoda array_windows operează cu o dimensiune constantă a feronetei și returnează la fiecare iterație o referință la un tablou de dimensiune fixă (&[T; N]) în loc de un slice de dimensiune nedefinită (&[T]). Deoarece dimensiunea tabloului este cunoscută de compiler de la bun început, pentru a îmbunătăți performanța se poate evita verificarea limitelor tabloului în fiecare etapă a iterației. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
- În fișierele de configurație ale managerului de pachete Cargo (.cargo/config.toml) a fost implementată directiva ‘include’, care permite inserarea conținutului din alte fișiere. include = [ 'frodo.toml', 'samwise.toml', ] include = [ { path = 'required.toml' }, { path = 'optional.toml', optional = true }, ]
- În fișierele cu manifeste și fișierele de configurație a fost adăugată suportul pentru noua versiune a limbajului de marcare TOML 1.1, care introduce suport pentru tabele încorporate multi-linie, secvențe de escape ‘\xHH’ pentru inserarea reprezentării hexadecimale a octetilor și ‘\e’ pentru substituirea ‘\u001B’, posibilitatea de a lăsa o virgulă la sfârșitul ultimei intrări și de a omite specificarea secundelor în valorile de timp. serde = { version = '1.0', features = ['derive'] } poate fi acum înlocuit cu serde = { version = '1.0', features = ['derive'], }
- O nouă porțiune de API a fost transformată în stabilitate, inclusiv metode și implementări ale tiparelor stabilize.
- ::array_windows
- ::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom for usize
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Funcții încorporate pentru instrucțiunile x86 avx512fp16
- Funcții încorporate pentru instrucțiunile AArch64 NEON fp16
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- Semnul „const” aplicat în funcții:
- f32::mul_add
- Platforma riscv64im-unknown-none-elf a fost tradusă la nivelul trei de suport. Nivelul trei acoperă suportul de bază, dar fără testare automatizată, publicarea de builds oficiale și verificarea capacității de construire a codului.
- De asemenea, merită menționate proiectele și evenimentele recent anunțate legate de Rust:
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.
- Se menționează că lucrările la legăturile Rust se desfășoară încă din sfârșitul anului 2024. În legături a fost implementată doar o parte din C-KPI și sunt poziționate ca fiind instabile, dar, în timp, se intenționează să se atingă un nivel de stabilitate similar cu cel al interfeței pentru limbajul C. Driverul virtio_snd propus ca exemplu este adecvat pentru redarea muzicii în QEMU. Se preconizează că, în 2026, legăturile Rust vor fi suficient de stabilizate pentru ca dezvoltatorii interesați să înceapă să le folosească pentru scrierea de cod.
Se observă că munca asupra legăturilor Rust este în curs de desfășurare din 2024. În prezent, doar o parte a C-KPI este implementată și ele sunt considerate instabile, dar se intenționează ca, în timp, să se atingă un nivel de stabilitate similar cu cel al interfeței pentru limbajul C. Driverul virtio_snd propus este capabil de redarea muzicii în QEMU. Se preconizează că în 2026 legăturile Rust vor fi suficient de stabilizate pentru ca dezvoltatorii interesați să înceapă să le folosească pentru programarea codului.
- Benny Siegert, implicat în dezvoltarea NetBSD, a încercat să ofere motive pentru care suportul pentru limbajul Rust nu va apărea în kernelul NetBSD: NetBSD suportă arhitecturi pentru care Rust nu este disponibil; menținerea instrumentarului Rust existent în pkgsrc necesită eforturi semnificative și este acompaniată de puțini dezvoltatori; suportul Rust în kernel necesită includerea compilatorului Rust în sistemul de bază; la bootstrap-ul Rust în NetBSD se folosește o versiune anterioară a pachetului binar, ceea ce este inacceptabil pentru distribuțiile independente, distribuite în cod sursă; ciclurile de lansare Rust sunt incompatibile cu ciclul de dezvoltare NetBSD și cu suportul versiunilor anterioare (de exemplu, versiunea NetBSD 9, lansată în 2020, continuă să fie suportată; în aceste condiții ar fi necesară livrarea și suportul pentru un compilator Rust vechi de șase ani).
- A fost lansată versiunea 0.5 a SGBD-ului încorporat în aplicații Turso, scris în Rust și compatibil cu SQLite la nivel de dialect SQL, formatul fișierelor DB și API-ul C. Printre caracteristicile avansate se numără mecanismul CDC (Change data capture) pentru urmărirea modificărilor DB în timp real, utilizarea io_uring pentru I/O asincron pe Linux, suportul pentru căutarea vectorială, existența expresiei ALTER pentru modificarea schemei DB, capacitatea de criptare a datelor în DB, modul de calcul incremental și construcția „BEGIN CONCURRENT”.
- Proiectul care oferă posibilitatea de a utiliza biblioteca standard Rust în programele executate pe GPU.
- Emuko este un emulator RISC-V, scris în Rust, capabil să încarce Linux, suportă compilarea JIT și poate salva și restaura instantanee ale stării.
- RustConn (flatpak) este o interfață grafică pentru gestionarea conexiunilor externe de rețea către alte gazde, care suportă SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust și SFTP. Codul este scris în Rust folosind GTK4 și Wayland.
- A fost prezentată o nouă ramură a proiectului zlib-rs 0.6, marcată ca prima versiune stabilă, complet compatibilă cu API-ul C al zlib și adecvată pentru înlocuirea transparentă a zlib. Proiectul are ca obiectiv crearea unui analog securizat al bibliotecii de comprimare a datelor zlib. Dezvoltarea se desfășoară cu referire la proiectul zlib-ng, care dezvoltă o variantă zlib de mare performanță.
- A fost prezentat proiectul vcad, care dezvoltă un sistem parametric de proiectare asistată de calculator (SAC), scris în Rust și integrat cu agenți AI prin intermediul protocolului MCP. Se susține modelarea 3D, simularea, lucrul cu schițe 2D, asamblarea componentelor, importul în format STEP și exportul în formatele STL/GLB/STEP/DXF.
- A fost publicat un sistem de recunoaștere a vorbirii, scris în Rust și folosind modelul AI Mistral Voxtral Mini 4B Realtime și framework-ul de învățare automată Burn. Proiectul este orientat spre recunoașterea vorbirii în timp real pentru formarea transcrierii în timpul difuzării.
- A avut loc lansarea instrumentarului c2rust 0.22, destinat transformării codului C (C99) într-o reprezentare nesigură în Rust, apropiată ca structură de codul inițial în C. Scheletul funcțional obținut poate fi folosit ulterior pentru tranziția treptată la Rust idiomatic și eliminarea blocurilor nesigure.
Sursa: opennet.ro
