De programmeertaal Rust 1.94, ontwikkeld door het Mozilla-project maar nu ontwikkeld onder auspiciën van de onafhankelijke non-profit Rust Foundation, is uitgebracht. De taal richt zich op geheugenveiligheid en biedt tools voor het bereiken van een hoge mate van parallelliteit bij de uitvoering van taken, zonder gebruik te maken van een garbage collector en runtime (de runtime is beperkt tot basisinitialisatie en onderhoud van de standaardbibliotheek).
De geheugenbeheermethoden van Rust zijn ontworpen om fouten bij pointermanipulatie te elimineren en te beschermen tegen problemen die voortkomen uit geheugenbeheer op laag niveau, zoals toegang tot geheugen nadat het is vrijgegeven, het dereferentiëren van null-pointers, bufferoverloop, enzovoort. Het project ontwikkelt de Cargo-pakketbeheerder om bibliotheken te distribueren, builds te vergemakkelijken en afhankelijkheden te beheren. De crates.io-repository wordt onderhouden voor het hosten van bibliotheken.
Geheugenveiligheid wordt in Rust afgedwongen tijdens het compileren door middel van referentiecontrole, het volgen van objecteigendom, overweging van de levensduur van objecten (scoping) en evaluatie van geheugentoegang tijdens runtime. Rust biedt ook bescherming tegen overflows van gehele getallen, vereist dat variabelewaarden vóór gebruik worden geïnitialiseerd, heeft een betere foutafhandeling in de standaardbibliotheek, gebruikt standaard het concept van onveranderlijke referenties en variabelen en biedt sterke statische typering om logische fouten te minimaliseren.
Belangrijkste innovaties:
- Het slice-type heeft nu een `array_windows`-methode. Deze methode maakt een iterator aan voor het doorlopen van slices in vensters van vaste grootte, waarbij telkens één element wordt doorgeschoven. In tegenstelling tot de eerder beschikbare `windows`-methode werkt `array_windows` met een constante venstergrootte en retourneert het een verwijzing naar een array van vaste grootte (&[T; N]) in plaats van een slice van ongedefinieerde grootte (&[T]) voor elke iteratie. Omdat de compiler de grootte van de array in eerste instantie kent, kan de prestatie worden verbeterd door het controleren van de grenzen bij elke iteratiestap te vermijden. `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());`
- De configuratiebestanden van de Cargo-pakketbeheerder (.cargo/config.toml) implementeren de "include"-richtlijn, waarmee u de inhoud van andere bestanden direct kunt invoegen. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Ondersteuning voor de nieuwe versie van de TOML 1.1-opmaaktaal is toegevoegd aan manifest- en configuratiebestanden. Deze nieuwe versie biedt ondersteuning voor ingesloten tabellen over meerdere regels, de escape-sequentie "\xHH" voor het invoegen van hexadecimale byte-representaties en de escape-sequentie "\e" voor "\u001B", samen met de mogelijkheid om een komma aan het einde van het laatste element te plaatsen en seconden in tijdwaarden weg te laten. serde = { version = "1.0", features = ["derive"] } kan nu worden vervangen door serde = { version = "1.0", features = ["derive"], }
- Een nieuw deel van de API is overgebracht naar de stabiele categorie, inclusief de methoden en implementaties van eigenschappen:
- <[T]>::array_windows
- <[T]>::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom voor gebruik
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Intrinsieke waarden voor x86 AVX512FP16-instructies
- Intrinsieke waarden voor AArch64 NEON fp16-instructies
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- Het teken “const” wordt gebruikt in functies:
- f32::mul_add
- f64::mul_add
- Het riscv64im-unknown-none-elf-platform is verplaatst naar ondersteuningsniveau 3. Ondersteuningsniveau 3 omvat basisondersteuning, maar geen geautomatiseerde tests, officiële buildreleases of buildverificatie.
Daarnaast willen we graag de recent aangekondigde projecten en evenementen met betrekking tot Rust onder de aandacht brengen:
- Ayrton Muñoz, die ondersteuning voor het Sony PlayStation 1-platform in de Rust-compiler implementeerde en FreeBSD naar computers met Apple Silicon-chips porteerde, heeft de mogelijkheid geïmplementeerd om kernelcomponenten en apparaatstuurprogramma's in Rust voor FreeBSD te schrijven. Een set KPI-bindings (Kernel Programming Interface) waarmee Rust-code in de FreeBSD-kernel kan worden gebruikt, is beschikbaar gesteld voor testen, samen met het virtio-geluidsstuurprogramma (virtio_snd), het DockChannel HID-stuurprogramma voor het M2 MacBook-toetsenbord en verschillende low-level stuurprogramma's voor Mac-computersubsystemen op Apple Silicon-chips, die allemaal met behulp van deze bindings zijn gemaakt.
Er wordt al sinds eind 2024 gewerkt aan de Rust-bindings. Momenteel implementeren de bindings slechts een deel van de C-KPI's en worden ze als instabiel beschouwd, maar het is de bedoeling om de stabiliteit in de loop der tijd te verbeteren tot het niveau van een vergelijkbare interface voor de C-taal. De virtio_snd-driver, die als voorbeeld wordt genoemd, is geschikt voor het afspelen van muziek in QEMU. Naar verwachting zullen de Rust-bindings in 2026 voldoende stabiel zijn zodat geïnteresseerde ontwikkelaars ze kunnen gaan gebruiken voor het schrijven van code.
- NetBSD-ontwikkelaar Benny Siegert gaf een verklaring waarom Rust-ondersteuning niet in de NetBSD-kernel zal verschijnen: NetBSD ondersteunt architecturen waarvoor Rust niet beschikbaar is; het onderhouden van de bestaande Rust-toolchain in pkgsrc is een aanzienlijke inspanning en wordt slechts door een paar ontwikkelaars ondersteund; kernelondersteuning voor Rust vereist dat de Rust-compiler in het basissysteem is opgenomen; het opstarten van Rust op NetBSD maakt gebruik van een verouderd binair pakket, wat onacceptabel is voor op zichzelf staande distributies die als broncode worden verspreid; de releasecycli van Rust zijn incompatibel met de ontwikkelings- en ondersteuningscycli van NetBSD voor oudere branches (NetBSD 9, uitgebracht in 2020, wordt bijvoorbeeld nog steeds ondersteund, wat zou betekenen dat een zes jaar oude Rust-compiler moet worden meegeleverd en ondersteund).
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Een project om het gebruik van de standaardbibliotheek van Rust in GPU-programma's mogelijk te maken.
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn (flatpak) is een grafische interface voor het beheren van externe netwerkverbindingen met andere hosts. Het ondersteunt SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust en SFTP. De code is geschreven in Rust met behulp van GTK4 en Wayland.
- Een nieuwe branch van het zlib-rs 0.6-project is uitgebracht. Dit is de eerste stabiele versie die volledig compatibel is met de zlib C API en geschikt is als transparante vervanging voor zlib. Het project heeft als doel een veilig alternatief te creëren voor de zlib-datacompressiebibliotheek. De ontwikkeling vindt plaats met het zlib-ng-project in gedachten, dat een krachtige variant van zlib ontwikkelt.
- Het VCAD-project is een ontwikkeling van een parametrisch computerondersteund ontwerpsysteem (CAD) geschreven in Rust, geïntegreerd met AI-agenten via het MCP-protocol. Het ondersteunt 3D-modellering, simulatie, 2D-schetsen, componentassemblage, STEP-import en STL/GLB/STEP/DXF-export.
- Er is een spraakherkenningssysteem gepubliceerd, geschreven in Rust en gebruikmakend van het Mistral Voxtral Mini 4B Realtime AI-model en het Burn-machine learning-framework. Het project richt zich op realtime spraakherkenning voor live transcriptie van streaming content.
- De c2rust 0.22 toolkit is uitgebracht. Deze is ontworpen om C-code (C99) te vertalen naar een onveilige Rust-representatie, die qua structuur vergelijkbaar is met de originele C-code. Het resulterende werkende framework kan worden gebruikt voor een geleidelijke migratie naar idiomatisch Rust en het verwijderen van onveilige codeblokken.
Bron: opennet.ru
