På den aktuelle Linux Plumbers 2022 konference præsenterede en ingeniør fra Western Digital et foredrag om udviklingen af en eksperimentel driver til SSD-lagringsenheder med NVM-Express (NVMe) interface, skrevet i Rust og fungerende på Linux-kernen. Selvom projektet stadig er i de tidlige udviklingsfaser, viste de udførte tests, at ydeevnen for NVMe-driveren skrevet i Rust svarer til den eksisterende NVMe-driver i kernen, skrevet i C.


I foredraget nævnes det, at den nuværende NVMe-driver i C fuldt ud tilfredsstiller udviklerne, men NVMe-subsystemet er et godt testområde for at undersøge mulighederne for at udvikle drivere i Rust, da det er relativt simpelt, bredt anvendt, stiller høje krav til ydeevne, har en velafprøvet referenceimplementering til sammenligning og understøtter forskellige interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).
Det bemærkes, at PCI NVMe-driveren i Rust allerede leverer den nødvendige funktionalitet, men endnu ikke er klar til bred anvendelse, da den kræver yderligere forbedringer. Blandt fremtidige planer nævnes det at fjerne eksisterende unsafe-blokke fra koden, støtte for enhedsfjernelse og driver-afmontering, understøttelse af sysfs-interface, implementering af forsinket initialisering, skabe en driver til blk-mq og eksperimentere med anvendelsen af asynkron programmeringsmodel for queue_rq.

Derudover kan det nævnes, at NCC Group gennemfører eksperimenter med udvikling af drivere i Rust til FreeBSD-kernen. Som eksempel gennemgås en simpel echo-driver, der returnerer data, der er skrevet til filen /dev/rustmodule. I den næste fase af eksperimenterne overvejer NCC Group muligheden for at omskrive grundlæggende kern komponenter i Rust for at øge sikkerheden i netværks- og filoperationer.
Selv om det vises, at det er muligt at oprette enkle moduler i Rust, vil en tættere integration af Rust i kernen af FreeBSD kræve yderligere arbejde. For eksempel nævnes behovet for at skabe en række abstraktionslag over subsystemer og kernelstrukturer, der ligner de udvidelser, der er forberedt af projektet Rust for Linux. Fremover planlægges lignende eksperimenter med Illumos-kernen, hvor man vil identificere fælles abstraktioner i Rust, som kan bruges i Rust-drevne drivere til Linux, BSD og Illumos.
Ifølge data fra Microsoft og Google skyldes cirka 70 % af sårbarhederne i deres softwareprodukter usikker håndtering af hukommelse. Det antages, at brugen af Rust vil mindske risikoen for sårbarheder forårsaget af usikker hukommelse og eliminere sådanne fejl som adgang til hukommelsesområder efter frigivelse og buffer-overløb.
Sikker hukommelseshåndtering sikres i Rust under kompileringen gennem referencekontrol, overvågning af ejerskab af objekter og livscyklus (scope) af objekter, samt evaluering af korrekt hukommelsestilgang under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltalsoverskridelser, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med immutability (uændrede) referencer og variabler som standard, og tilbyder stærk statisk typekontrol for at minimere logiske fejl.
Kilde: opennet.ru
