De release van de programmeertaal Rust 1.94 is gepubliceerd, oorspronkelijk gebaseerd op een project van Mozilla, maar nu ontwikkeld onder toezicht van de onafhankelijke non-profitorganisatie Rust Foundation. De taal is gericht op veilige geheugenwerking en biedt middelen om hoge parallelisme bij het uitvoeren van taken te bereiken, terwijl het zonder een garbage collector en runtime werkt (de runtime beperkt zich tot basisinitialisatie en het onderhoud van de standaardbibliotheek).
De geheugenmethoden in Rust zijn gericht op het uitsluiten van fouten bij het manipuleren van pointers en het beschermen tegen problemen die voortkomen uit laagdrempelige geheugengebruik, zoals toegang tot geheugen na vrijgave, derefereren van null pointers, buffer overflows, enz. Voor de distributie van bibliotheken, het waarborgen van builds en het beheren van afhankelijkheden, wordt de package manager Cargo verder ontwikkeld. Voor het hosten van bibliotheken wordt de repository crates.io ondersteund.
Veilige geheugenwerking in Rust wordt tijdens de compilatie gegarandeerd door middel van referentiecontrole, het bijhouden van eigenaarschap van objecten, het in acht nemen van de levensduur van objecten (scope) en het evalueren van toegangsrechten tot geheugen tijdens de uitvoering van code. Rust biedt ook middelen om integer-overflows te voorkomen, vereist dat waarden van variabelen voor gebruik worden geĆÆnitialiseerd, behandelt fouten beter in de standaardbibliotheek, past het concept van onveranderlijke (immutable) referenties en variabelen als standaard toe en biedt sterke statische type-onderzoek voor het minimaliseren van logische fouten.
Belangrijkste vernieuwingen:
- De slice-typ heeft de methode array_windows toegevoegd, die een iterator creƫert om door slices te lopen in 'vensters' van vast formaat, die ƩƩn element per keer verschuiven. In tegenstelling tot de eerder beschikbare windows-methode, werkt de array_windows-methode met een vast raamformaat en retourneert bij elke iteratie een referentie naar een array van vast formaat (&[T; N]) in plaats van een slice van onbepaald formaat (&[T]). Aangezien de grootte van de array aanvankelijk door de compiler bekend is, kan de grenscontrole voor de array tijdens elke iteratie om prestaties te verhogen worden omzeild. 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());
- In de configuratiebestanden van de pakketbeheerder Cargo (.cargo/config.toml) is de 'include'-directive geĆÆmplementeerd, die het mogelijk maakt om ter plaatse de inhoud van andere bestanden in te voegen. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Naar de manifeste- en configuratiebestanden is ondersteuning toegevoegd voor de nieuwe versie van de opmaaktaal TOML 1.1, die ondersteuning biedt voor meerregelige ingebedde tabellen, escape-sequenties "\xHH" voor het invoegen van hexadecimale weergave van bytes en "\e" voor de vervanging van "\u001B", de mogelijkheid om een komma aan het einde van het laatste element te plaatsen en om sekunden in tijdwaarden over te slaan. serde = { version = "1.0", features = ["derive"] } kan nu worden vervangen door serde = { version = "1.0", features = ["derive"], }
- Een nieuwe lading API's is gestabiliseerd, inclusief gestabiliseerde methoden en implementaties van traits:
- ::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
- Ingebouwde functies voor x86-instructies avx512fp16
- Ingebouwde functies voor AArch64-instructies NEON fp16
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- De eigenschap "const" is toegepast in de functies:
- f32::mul_add
- f64::mul_add
- Het riscv64im-unknown-none-elf-platform heeft het derde ondersteuningsniveau bereikt. Dit niveau omvat basisondersteuning, maar zonder geautomatiseerd testen, publicatie van officiƫle builds en verificatie van codebouwmogelijkheden.
Daarnaast kunnen de onlangs aangekondigde projecten en evenementen die verband houden met Rust worden vermeld:
- Ayrton Muñoz, die ooit ondersteuning voor het Sony PlayStation 1-platform in de Rust-compiler heeft gerealiseerd en zich heeft beziggehouden met het porteren van FreeBSD naar computers met Apple Silicon-chips, heeft de mogelijkheid geïmplementeerd om kernelcomponenten en apparaatdrivers in Rust te maken voor FreeBSD. Voor testing is een set KPI-wrapper (Kernel Programming Interface) voorgesteld, die het gebruik van Rust-code in de FreeBSD-kernel mogelijk maakt, evenals een geluidsdriver virtio (virtio_snd), de HID-driver DockChannel voor het toetsenbord in de M2 MacBook, en verschillende low-level drivers voor de subsystemen van Macs met Apple Silicon-chips.
Het wordt opgemerkt dat de ontwikkeling van Rust-wrappers begonnen is eind 2024. In de wrappers is momenteel slechts een deel van de C-KPI geĆÆmplementeerd en ze worden gepositioneerd als onstabiel, maar er zijn plannen om de stabiliteitsniveaus in de toekomst gelijk te trekken met die van de interface voor de C-taal. De voorgestelde virtio_snd-driver is geschikt voor het afspelen van muziek in QEMU. Het wordt verwacht dat in 2026 de Rust-wrappers voldoende gestabiliseerd zullen zijn zodat geĆÆnteresseerde ontwikkelaars kunnen beginnen met het schrijven van code.
- Benny Siegert, die betrokken is bij de ontwikkeling van NetBSD, heeft geprobeerd de redenen toe te lichten waarom ondersteuning voor de Rust-taal niet in de NetBSD-kernel zal komen: NetBSD ondersteunt architecturen waarvoor Rust niet beschikbaar is; het onderhoud van de bestaande Rust-toolchain in pkgsrc vereist veel inspanning en wordt slechts door enkele ontwikkelaars ondersteund; ondersteuning van Rust in de kernel vereist dat de Rust-compiler in het basissysteem wordt opgenomen; bij het bootstrappen van Rust in NetBSD wordt een oudere versie van het binaire pakket gebruikt, wat onaanvaardbaar is voor zelfstandige distributies die in de broncode worden verspreid; de releasecycli van Rust zijn niet compatibel met de ontwikkelingscyclus van NetBSD en de ondersteuning van oudere versies (bijvoorbeeld wordt NetBSD 9, uitgebracht in 2020, nog steeds ondersteund, in deze omstandigheden zou het noodzakelijk zijn om een zes jaar oude Rust-compiler te leveren en te ondersteunen).
- De release van de ingebedde database Turso 0.5, geschreven in Rust en compatibel met SQLite op SQL-dialectniveau, bestandsindeling en C API is gepubliceerd. Onder de nieuwe functies is er een CDC-mechanisme (Change Data Capture) voor het in real time volgen van databasewijzigingen, het gebruik van io_uring voor asynchrone I/O in Linux, ondersteuning voor vectorzoekopdrachten, een ALTER-expressie voor schemawijzigingen, mogelijkheden voor gegevensversleuteling in de database, een modus voor incrementele berekeningen en de constructie 'BEGIN CONCURRENT'.
- Een project dat de mogelijkheid biedt om de standaardbibliotheek van Rust te gebruiken in programma's die aan de GPU worden uitgevoerd.
- Emuko ā een RISC-V-emulator, geschreven in Rust, die Linux kan opstarten, JIT-compilatie ondersteunt en in staat is om snapshots van de status op te slaan en te herstellen.
- RustConn (flatpak) ā een grafische interface voor het beheren van externe netwerkverbindingen naar andere hosts, die SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust en SFTP ondersteunt. De code is geschreven in Rust met gebruik van GTK4 en Wayland.
- Er is een nieuwe tak van het zlib-rs 0.6-project gepresenteerd, aangeduid als de eerste stabiele versie die volledig compatibel is met de zlib C API en geschikt is voor naadloze vervanging van zlib. Het project is gericht op het creƫren van een beveiligd alternatief voor de zlib gegevenscompressie bibliotheek. De ontwikkeling vindt plaats met het oog op het zlib-ng project, dat een high-performance variant van zlib uitbreidt.
- Het project vcad is gepresenteerd, dat een parametrisch systeem van computerondersteund ontwerp (CAD) ontwikkelt, geschreven in Rust en geĆÆntegreerd met AI-agenten via het MCP-protocol. Het ondersteunt 3D-modellering, simulatie, werken met 2D-schetsen, componentassemblage, import in STEP-indeling en export in STL/GLB/STEP/DXF-formaten.
- Er is een spraakherkenningssysteem gepubliceerd, geschreven in Rust en gebruikmakend van het AI-model Mistral Voxtral Mini 4B Realtime en het machine learning-framework Burn. Het project is gericht op spraakherkenning in real time voor het genereren van transcripties tijdens live-uitzendingen.
- De release van de c2rust 0.22 toolkit is verschenen, bedoeld voor het vertalen van C-code (C99) naar een onveilige weergave in Rust, die qua structuur dicht bij de oorspronkelijke C-code ligt. Het verkregen werkframe kan later worden gebruikt voor geleidelijke conversie naar idiomatisch Rust en het verwijderen van onveilige blokken.
Bron: opennet.ru
