WD ontwikkelt een NVMe-driver in Rust. Experimenten met Rust in FreeBSD

Tijdens de momenteel gehouden conferentie Linux Plumbers 2022 heeft een ingenieur van Western Digital een presentatie gegeven over de ontwikkeling van een experimentele driver voor SSD's met een NVM-Express (NVMe) interface, geschreven in de programmeertaal Rust en werkend op het niveau van de Linux-kernel. Hoewel het project zich nog in een vroeg stadium van ontwikkeling bevindt, heeft de uitgevoerde test aangetoond dat de prestaties van de NVMe-driver in Rust vergelijkbaar zijn met die van de bestaande NVMe-driver in de C-taal.

WD ontwikkelt een NVMe-driver in Rust. Experimenten met Rust in FreeBSD
WD ontwikkelt een NVMe-driver in Rust. Experimenten met Rust in FreeBSD

In de presentatie wordt gesteld dat de huidige NVMe-driver in C volledig voldoet aan de ontwikkelaars, maar dat de NVMe-subsysteem een goede gelegenheid biedt om de haalbaarheid van het ontwikkelen van drivers in Rust te onderzoeken, omdat deze subsystemen vrij eenvoudig zijn, breed worden gebruikt, hoge prestatie-eisen stellen, een goedgekeurde referentie-implementatie voor vergelijking hebben en verschillende interfaces ondersteunen (dev, pci, dma, blk-mq, gendisk, sysfs).

Er wordt opgemerkt dat de PCI NVMe-driver in Rust al de noodzakelijke functionaliteit biedt, maar nog niet klaar is voor breed gebruik, omdat er specifieke verbeteringen nodig zijn. Onder de toekomstige plannen valt het verwijderen van de huidige unsafe-blokken in de code, ondersteuning voor apparaatsverwijderingen en driver-unload operaties, ondersteuning voor de sysfs-interface, het implementeren van uitgestelde initialisatie, het creƫren van een driver voor blk-mq en experimenten met asynchrone programmeermodellen voor queue_rq.

Video afspelen

Daarnaast kunnen de experimenten van NCC Group voor het ontwikkelen van drivers in Rust voor de FreeBSD-kernel worden genoemd. Als voorbeeld wordt een eenvoudige echo-driver gedetailleerd besproken, die gegevens retourneert die zijn geschreven naar het bestand \/dev\/rustmodule. In de volgende fase van de experimenten overweegt NCC Group de basiscomponenten van de kernel opnieuw te ontwerpen in Rust om de veiligheid van netwerk- en bestandsoperaties te verbeteren.

Ondanks de mogelijkheid om eenvoudige modules te creƫren in de programmeertaal Rust, vereist een nauwere integratie van Rust in de FreeBSD-kernel meer werk. Er wordt bijvoorbeeld gesproken over de noodzaak om een set abstractielaag boven de subsystemen en datastructuren van de kernel te creƫren, vergelijkbaar met de uitbreidingen die zijn voorbereid door het project Rust for Linux. In de toekomst zijn er soortgelijke experimenten gepland met de Illumos-kernel, waarbij algemene abstracties in Rust worden ontwikkeld die kunnen worden gebruikt in drivers voor Linux, BSD en Illumos die in Rust zijn geschreven.

Volgens gegevens van Microsoft en Google is ongeveer 70% van de kwetsbaarheden in hun softwareproducten het gevolg van onveilige geheugenafhandeling. Het wordt verwacht dat het gebruik van de programmeertaal Rust het risico op kwetsbaarheden, veroorzaakt door onveilige geheugenafhandeling, zal verminderen en fouten zoals toegang tot geheugen na vrijgave en buffer overflows zal uitsluiten.

Veilige geheugentoegang wordt in Rust tijdens de compilatie gegarandeerd door middel van referentietests, objecteigenaarschap en het bijhouden van de levensduur van objecten (scope), evenals door het evalueren van de geldigheid van geheugentoegang tijdens het uitvoeren van code. Rust biedt ook middelen om te beschermen tegen gehele getallenoverflows, vereist dat variabelen verplicht worden geĆÆnitialiseerd voordat ze worden gebruikt, behandelt fouten beter in de standaardbibliotheek, past het concept van onveranderlijkheid (immutable) van verwijzingen en variabelen standaard toe en biedt sterke statische typecontrole om logische fouten te minimaliseren.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster