På konferencen, der finder sted i disse dage Linux På Plumbers 2022 præsenterede en Western Digital-ingeniør en rapport om udviklingen af en eksperimentel kerne-driver til NVM-Express (NVMe) SSD'er, skrevet i Rust. LinuxSelvom projektet stadig er i sine tidlige udviklingsstadier, har test vist, at ydeevnen af den Rust-baserede NVMe-driver er sammenlignelig med den indbyggede NVMe-driver, der er skrevet i C.


Rapporten fastslår, at den nuværende NVMe-driver i C er fuldstændig tilfredsstillende for udviklere, men NVMe-delsystemet er en god platform til at udforske muligheden for at udvikle drivere i Rust, da det er ret simpelt, meget brugt, har høje ydeevnekrav, og har en gennemprøvet referenceimplementering til sammenligning og understøtter forskellige grænseflader (dev, pci, dma, blk-mq, gendisk, sysfs).
Det bemærkes, at PCI NVMe-driveren til Rust allerede giver den funktionalitet, der er nødvendig for drift, men endnu ikke er klar til udbredt brug, da den kræver individuelle forbedringer. Fremtidige planer omfatter fjernelse af koden for eksisterende usikre blokke, understøttelse af enhedsfjernelse og driveraflæsningsoperationer, understøttelse af sysfs-grænsefladen, implementering af doven initialisering, oprettelse af en driver til blk-mq og eksperimentering med at bruge en asynkron programmeringsmodel til queue_rq.

Derudover kan vi bemærke de eksperimenter, der er udført af NCC Group for at udvikle drivere i Rust-sproget til FreeBSD-kernen. Som et eksempel undersøger vi i detaljer en simpel ekkodriver, der returnerer data skrevet til filen /dev/rustmodule. I den næste fase af eksperimenter overvejer NCC Group muligheden for at omarbejde kernens kernekomponenter i Rust-sproget for at forbedre sikkerheden for netværks- og filoperationer.
Selvom muligheden for at oprette simple moduler i Rust er blevet demonstreret, vil en tættere integration af Rust i FreeBSD-kernen kræve yderligere arbejde. For eksempel nævnes behovet for at oprette et sæt abstraktionslag over kernens undersystemer og strukturer, svarende til de frameworks, der er udviklet af Rust for-projektet. LinuxI fremtiden planlægger vi at udføre lignende eksperimenter med Illumos-kernen og identificere almindelige abstraktioner i Rust, der kan bruges i drivere skrevet i Rust til Linux, BSD og Illumos.
Ifølge Microsoft og Google er omkring 70 % af sårbarhederne i deres softwareprodukter forårsaget af usikker hukommelseshåndtering. Det forventes, at brugen af Rust-sproget vil reducere risikoen for sårbarheder forårsaget af usikkert arbejde med hukommelsen, og eliminere forekomsten af fejl såsom adgang til et hukommelsesområde efter det er blevet frigivet og overløb af bufferen.
Hukommelsessikker håndtering leveres i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab og objektlevetid (scope), samt gennem evaluering af korrektheden af hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.
Kilde: opennet.ru
