Megjelent a Rust programozási nyelv 1.94-es verziója, amelyet a Mozilla projekt indított, de jelenleg a Rust Foundation független, nonprofit szervezete fejleszt. A nyelv a memória biztonságos kezelésére összpontosít, és eszközöket biztosít a feladatok magas párhuzamossággal történő végrehajtásához, mindezt szemétgyűjtő és futási idő (runtime) használata nélkül, amely a standard könyvtár alapvető inicializálására és karbantartására korlátozódik.
A Rust memória kezelésének módszerei arra irányulnak, hogy kiküszöböljék a pointerekkel végzett manipuláció során fellépő hibákat, és megvédjék a memória alacsony szintű használatából adódó problémáktól, mint például a már felszabadított memória területekhez való hozzáférés, a null pointerek dereferálása, a buffer túlfolyás és hasonlók. A könyvtárak terjesztésére, a fordítás biztosítására és a projektek függőségeinek kezelésére a Cargo csomagkezelő fejlődik.
A memória biztonságos kezelése a Rustban a fordítási időben történik, a hivatkozások ellenőrzésén, az objektumok tulajdonjogának nyomon követésén, az objektumok élettartamának (láthatóságának) figyelembevételén és a memória hozzáférésének helyességének értékelésén keresztül a kód futtatásakor. A Rust emellett eszközöket biztosít az egész számok túllépésének elleni védelemhez, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza a változatlan (immutable) hivatkozások és változók fogalmát alapértelmezés szerint, és erős statikus típussal minimalizálja a logikai hibákat.
Főbb újítások:
- A slice típushoz hozzáadva lett az array_windows metódus, amely egy iterátort hoz létre a szeletek „ablakain” való átjáráshoz, fix méretben, egy elemmel eltolva. A korábban elérhető windows metódussal ellentétben az array_windows metódus állandó méretű ablakot kezel, és minden iteráció során egy fix méretű tömbre mutató hivatkozást (&[T; N]) ad vissza a szabványos méretű slice (&[T]) helyett. Mivel a tömb mérete kezdetben ismert a fordító számára, a teljesítmény növelése érdekében az iteráció minden szakaszában elhagyható a tömb határainak ellenőrzése. 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());
- A Cargo csomagkezelő konfigurációs fájljaiban (.cargo/config.toml) megvalósításra került az „include” direktíva, amely lehetővé teszi más fájlok tartalmának beillesztését a megadott helyekre. include = [ „frodo.toml”, „samwise.toml”, ] include = [ { path = „required.toml” }, { path = „optional.toml”, optional = true }, ]
- A manifest fájlokba és konfigurációs fájlokba beépítették az új TOML 1.1 markup nyelv támogatását, amelyben megjelent a többsoros beágyazott táblázatok támogatása, a hexadecimális byte értékek beszúrására szolgáló escape-sorozatok „\xHH” és a „\e” a „\u001B” helyettesítésére, mint a legutolsó elem után hagyható vessző és a másodpercek megadásának kihagyása az időértékeknél. serde = { version = „1.0”, features = [„derive”] } ezt most fel lehet váltani serde = { version = „1.0”, features = [„derive”], }
- Új API-k kerültak a stabil kiadások közé, beleértve a metódusok és típusimplementációk stabilizálását:
- ::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
- Beépített funkciók x86 utasításokhoz avx512fp16
- Beépített funkciók AArch64 utasításokhoz NEON fp16
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- A «const» jelző alkalmazása a funkciókban:
- f32::mul_add
- f64::mul_add
- A riscv64im-unknown-none-elf platform support has been upgraded to the third level. The third level includes basic support but lacks automated testing, publication of official builds, and code compilation verification.
Érdemes megemlíteni a Rust-tal kapcsolatos, nemrégiben bejelentett projekteket és eseményeket:
- Ayrton Muñoz, who previously implemented support for the Sony PlayStation 1 platform in the Rust compiler and was involved in porting FreeBSD to computers with Apple Silicon chips, has enabled the creation of kernel components and device drivers in Rust for FreeBSD. A set of KPI (Kernel Programming Interface) bindings has been proposed for testing, allowing the use of Rust code in the FreeBSD kernel, as well as the creation of a sound driver virtio (virtio_snd), a DockChannel HID driver for the keyboard in the M2 MacBook, and several low-level drivers for Mac systems based on Apple Silicon chips.
It is noted that work on Rust bindings has been ongoing since late 2024. The bindings currently implement only part of the C-KPI and are positioned as unstable, but there are plans to achieve a stability level similar to the interface for the C language over time. The example driver virtio_snd is suitable for playing music in QEMU. It is expected that by 2026, Rust bindings will be sufficiently stabilized for interested developers to start using them for code writing.
- Benny Siegert, involved in the development of NetBSD, has attempted to justify the reasons why support for Rust language will not appear in the NetBSD kernel: NetBSD supports architectures for which Rust is unavailable; maintaining the existing Rust tools in pkgsrc requires significant effort and is managed by only a few developers; supporting Rust in the kernel necessitates including the Rust compiler in the base system; during the bootstrapping of Rust in NetBSD, a previous version of the binary package is used, which is unacceptable for self-contained distributions distributed in source code; the Rust release cycles are incompatible with the development cycle of NetBSD and support for older branches (for example, the NetBSD 9 branch, released in 2020, continues to receive support, which would require the inclusion and maintenance of a six-year-old Rust compiler).
- Megjelent a Turso 0.5 beágyazott SQL adatbázis-kezelő, amely Rust nyelven készült és kompatibilis az SQLite SQL dialektusával, valamint az adatbázis fájlformátumával és C API-jával. Kiemelendő az új CDC (Change Data Capture) mechanizmus, amely valós időben nyomon követi az adatbázis változásait, az io_uring aszinkron I/O Linux számára, a vektoralapú keresés támogatása, az ALTER utasítás a séma módosítására, az adatbázis titkosításának lehetősége, az inkrementális számítási mód és a „BEGIN CONCURRENT” konstrukció.
- Projekt a Rust szabványkönyvtár használatának engedélyezésére GPU-oldali programokban.
- Emuko — RISC-V emulator, amely Rust nyelven készült, képes Linuxot betölteni, támogatja a JIT fordítást, és képes a snapshot állapotok mentésére és helyreállítására.
- RustConn (flatpak) — grafikus felület a külső hálózati kapcsolatok kezelésére más hosztokkal, támogatja az SSH, RDP, VNC, SPICE, Telnet, Soros, Kubernetes, Zero Trust és SFTP protokollokat. Kódja Rust nyelven íródott GTK4 és Wayland használatával.
- Megjelent a zlib-rs 0.6 új ág, amelyet első stabil verzióként jelölnek, teljes mértékben kompatibilis a zlib C API-jával és áttetsző cserére alkalmas. A projekt célja egy biztonságos adatkompresszáló könyvtár létrehozása, figyelembe véve a zlib-ng projektet, amely a zlib magas teljesítményű változatát fejleszti.
- Bemutatásra került a vcad projekt, amely egy paraméteres automatizált tervezőrendszert (CAD) fejleszt, Rust nyelven, integrálva AI ügynökökkel az MCP protokoll segítségével. Támogatja a 3D modellezést, a szimulációt, a 2D vázlatokkal való munkát, az alkatrészek összeszerelését, STEP formátumú importot és STL/GLB/STEP/DXF formátumú exportot.
- Megjelent a Rust nyelven készült beszédfelismerő rendszer, amely a Mistral Voxtral Mini 4B Realtime AI modellt és a Burn gépi tanulási keretrendszert használja. A projekt célja a beszéd valós időben történő felismerése a közvetítés alatti átiratok készítéséhez.
- Megjelent a c2rust 0.22 eszközkészlet, amely C-kód (C99) unsafe Rust-re történő fordítására szolgál, amely szerkezetileg közel áll az eredeti C-kódhoz. Az így nyert munkafázis fokozatosan felhasználható idiomatikus Rust-ra való átálláshoz, valamint az unsafe blokkok eltávolításához.
Forrás: opennet.ru
