Objavljen je izdanje programskog jezika Rust 1.94, koji je prvotno razvijen od strane Mozille, a sada ga razvija neprofitna organizacija Rust Foundation. Jezik se fokusira na sigurn rad s memorijom i pruža alate za postizanje visokog paralelizma izvršavanja zadataka, bez potrebe za korištenjem prikupljača smeća i runtime-a (runtime se svodi na osnovnu inicijalizaciju i održavanje standardne biblioteke).
Metode rada s memorijom u Rustu usmjerene su na isključivanje grešaka prilikom manipulacije pokazivačima i zaštitu od problema koji nastaju zbog niskog nivoa rada s memorijom, kao što su pristupanje oblasti memorije nakon njenog oslobađanja, dereferenciranje nultih pokazivača, izlazak izvan granica bafera itd. Za distribuciju biblioteka, osiguranje gradnje i upravljanje zavisnostima, projekat se razvija koristeći alat za upravljanje paketima Cargo. Za hostovanje biblioteka podržava se repozitorij crates.io.
Sigurno upravljanje memorijom u Rust-u osigurano je tokom kompajliranja pomoću provjere referenci, praćenja vlasništva nad objektima, uzimanja u obzir vremena života objekata (vidljivost) i procjene ispravnosti pristupa memoriji tokom izvršavanja koda. Rust takođe pruža sredstva za zaštitu od prelivanja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije korišćenja, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabli kao podrazumijevano, te nudi jaku statičku tipizaciju za minimiziranje logičkih grešaka.
Glavne novosti:
- Tipu slice je dodana metoda array_windows, koja stvara iteratorski prolaz kroz rezače (slice) „prozorima“ fiksne veličine, koji se pomiču za jedan element. Za razliku od ranije dostupne metode windows, metoda array_windows rukuje sa fiksnom veličinom prozora i vraća prilikom svake iteracije referencu na niz fiksne veličine (&[T; N]) umjesto niza neodređene veličine (&[T]). Kako je veličina niza prvotno poznata kompajleru, radi poboljšanja performansi može se izbjeći provjera granica niza u svakoj fazi iteracije. 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());
- U konfiguracijskim datotekama upravitelja paketa Cargo (.cargo/config.toml) implementirana je direktiva 'include', koja omogućuje umetanje sadržaja drugih datoteka na mjestu. include = [ 'frodo.toml', 'samwise.toml', ] include = [ { path = 'required.toml' }, { path = 'optional.toml', optional = true }, ]
- U datoteke s manifestima i konfiguracijske datoteke dodana je podrška za novu verziju jezika za označavanje TOML 1.1, koja je uvela podršku za višelinijske ugrađene tablice, escape sekvence '\xHH' za umetanje heksadecimalne reprezentacije bajtova i '\e' za zamjenu '\u001B', mogućnost ostavljanja zareza na kraju posljednjeg elementa i izostavljanje sekundi u vrijednostima vremena. serde = { version = '1.0', features = ['derive'] } sada se može zamijeniti s serde = { version = '1.0', features = ['derive'], }
- У розряд стабільних переведено нову порцію API, зокрема стабілізовані методи та реалізації типажів:
- ::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
- Ugrađene funkcije za x86 instrukcije avx512fp16
- Ugrađene funkcije za AArch64 instrukcije NEON fp16
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- Priznak „const“ primenjen u funkcijama:
- f32::mul_add
- f64::mul_add
- Platform riscv64im-unknown-none-elf has been moved to the third level of support. The third level covers basic support, but without automated testing, release of official builds, and verification of code build capability.
Dodatno lahko omenimo nedavno napovedane projekte in dogodke v povezavi z Rust:
- Ayrton Muñoz, who previously implemented support for the Sony PlayStation 1 platform in the Rust compiler and worked on porting FreeBSD to Apple Silicon chip computers, has implemented the ability to create kernel components and device drivers in Rust for FreeBSD. A set of KPI wrappers (Kernel Programming Interface) has been proposed for testing, allowing the use of Rust code in the FreeBSD kernel, as well as an audio driver virtio (virtio_snd), a HID driver DockChannel for keyboards on the M2 MacBook, and several low-level drivers for the Apple Silicon chip computers' subsystems.
It is noted that work on Rust wrappers has been ongoing since late 2024. Currently, only part of the C-KPI has been implemented in the wrappers, and they are positioned as unstable, but over time they plan to improve stability to the level of a similar interface for the C language. The proposed virtio_snd driver is suitable for music playback in QEMU. It is expected that by 2026, Rust wrappers will be sufficiently stabilized for interested developers to begin using them for coding.
- Benny Siegert, involved in the development of NetBSD, attempted to justify why support for the Rust language will not appear in the NetBSD kernel: NetBSD supports architectures for which Rust is unavailable; maintaining the existing Rust toolchain in pkgsrc requires significant effort and is supported by only a few developers; Rust support in the kernel requires including the Rust compiler in the base system; bootstrapping Rust in NetBSD uses an outdated version of the binary package, which is unacceptable for self-sufficient distributions distributed in source code; Rust release cycles are incompatible with the NetBSD development cycle and maintenance of older branches (for example, the NetBSD 9 branch, released in 2020, continues to be supported, and under these conditions, the delivery and support of a six-year-old Rust compiler would be required).
- Objavljen je izdanje aplikativne baze podataka Turso 0.5, napisano na jeziku Rust i kompatibilno sa SQLite na nivou SQL dijalekta, formata datoteka baze podataka i C API. Od naprednih mogućnosti ističe se mehanizam CDC (Change Data Capture) za praćenje promena u bazi podataka u realnom vremenu, korišćenje io_uring za asinhroni ulaz/izlaz u Linux-u, podrška za vektorsko pretraživanje, postojanje ALTER izraza za promenu šeme baze podataka, mogućnost šifrovanja podataka u bazi, režim inkrementalnih proračuna i konstrukcija „BEGIN CONCURRENT”.
- Projekat za omogućavanje korišćenja standardne biblioteke Rust u aplikacijama pokretanim na strani GPU-a.
- Emuko — emulátor RISC-V, napisan na Rust-u, sposoban za pokretanje Linux-a, podržava JIT kompajlaciju i može da čuva i obnavlja snimke stanja.
- RustConn (flatpak) — grafički interfejs za upravljanje spoljnim mrežnim povezivanjem sa drugim hostovima, podržava SSH, RDP, VNC, SPICE, Telnet, Serijski, Kubernetes, Zero Trust i SFTP. Kod je napisan na Rust-u koristeći GTK4 i Wayland.
- Predstavljen je novi deo projekta zlib-rs 0.6, obeležen kao prva stabilna verzija, potpuno kompatibilna sa zlib C API i pogodna za transparentnu zamenu zlib-a. Projekat ima za cilj da stvori sigurnu alternativu biblioteci za kompresiju podataka zlib. Razvoj se vodi uzimajući u obzir projekat zlib-ng, koji razvija visokoperformantnu verziju zlib-a.
- Predstavljen je projekat vcad, koji razvija parametarsku sistem automatizovanog projektovanja (CAD), napisan na Rust-u i integrisanu sa AI agentima putem MCP protokola. Podržava 3D modeliranje, simulaciju, rad sa 2D skicama, komponentnu montažu, uvoz u STEP formatu i izvoz u STL/GLB/STEP/DXF formatima.
- Objavljen je sistem za prepoznavanje govora, napisan na Rust-u i koristi AI model Mistral Voxtral Mini 4B Realtime i framework mašinskog učenja Burn. Projekat je orijentisan na prepoznavanje govora u realnom vremenu za formiranje transkripcije tokom strimovanja.
- Objavljen je alat c2rust 0.22, namenjen za prevod C koda (C99) u unsafe predstavu na Rust-u, blizu svoje strukture originalnom C kodu. Dobijeni radni okvir se može koristiti za postepeni prelaz na idiomatski Rust i uklanjanje unsafe blokova.
Izvor: opennet.ru
