WD dezvoltă un driver NVMe în limbajul Rust. Experimente cu Rust în FreeBSD

La conferința Linux Plumbers 2022, care se desfășoară în aceste zile, un inginer de la compania Western Digital a prezentat o lucrare despre dezvoltarea unui driver experimental pentru SSD-uri cu interfața NVM-Express (NVMe), scris în limbajul Rust și funcționând la nivelul nucleului Linux. Deși proiectul se află încă într-o etapă incipientă de dezvoltare, testele efectuate au arătat că performanța driverului NVMe scris în Rust corespunde driverului NVMe existent în nucleu, scris în limbajul C.

WD dezvoltă un driver NVMe în limbajul Rust. Experimente cu Rust în FreeBSD
WD dezvoltă un driver NVMe în limbajul Rust. Experimente cu Rust în FreeBSD

În lucrare se menționează că driverul NVMe actual, scris în C, îi satisface pe dezvoltatori, dar subsistemul NVMe reprezintă o bună oportunitate de a explora fezabilitatea dezvoltării driverelor în Rust, deoarece este suficient de simplu, este utilizat pe scară largă, prezintă cerințe ridicate de performanță, are o implementare de referință verificată pentru comparație și suportă diverse interfete (dev, pci, dma, blk-mq, gendisk, sysfs).

Se subliniază că driverul PCI NVMe pe Rust oferă deja funcționalitatea necesară pentru operare, dar nu este încă gata pentru utilizarea pe scară largă, deoarece necesită ajustări suplimentare. Printre planurile de viitor se numără eliminarea unor blocuri unsafe din cod, suportul pentru operațiuni de dezinstalare a dispozitivelor și descărcarea driverului, suportul pentru interfata sysfs, implementarea inițializării amânate, crearea unui driver pentru blk-mq și experimente cu utilizarea modelului de programare asincron pentru queue_rq.

Redați video

De asemenea, se evidențiază experimentele desfășurate de compania NCC Group pentru dezvoltarea driverelor în Rust pentru nucleul FreeBSD. Ca exemplu, se analizează în detaliu un driver echo simplu, care returnează datele scrise în fișierul /dev/rustmodule. În următoarea etapă a experimentelor, NCC Group ia în considerare posibilitatea refacerii componentelor de bază ale nucleului în Rust pentru a îmbunătăți securitatea operațiunilor de rețea și fișiere.

În ciuda faptului că a fost demonstrată posibilitatea de a crea module simple în limbajul Rust, o integrare mai strânsă a Rust în nucleul FreeBSD va necesita lucrări suplimentare. De exemplu, se menționează necesitatea creării unui set de straturi de abstracție peste subsistemele și structurile nucleului, asemănătoare cu extensiile pregătite de proiectul Rust for Linux. În viitor, se planifică desfășurarea unor experimente similare cu nucleul Illumos și identificarea de abstracții comune în Rust, care ar putea fi utilizate în driverele scrise în Rust pentru Linux, BSD și Illumos.

Conform datelor furnizate de Microsoft și Google, aproximativ 70% din vulnerabilitățile din produsele lor software sunt cauzate de gestionarea nesigură a memoriei. Se presupune că utilizarea limbajului Rust va reduce riscul apariției vulnerabilităților cauzate de gestionarea nesigură a memoriei și va elimina apariția unor erori, cum ar fi accesarea unei zone de memorie după eliberare și ieșirea în afara limitelor bufferului.

Funcționarea sigură a memoriei este asigurată în Rust în timpul compilării prin verificarea referințelor, urmărirea deținerii obiectelor și gestionarea duratei de viață a obiectelor (zona de vizibilitate), precum și prin evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, instrumente pentru protecția împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică conceptul de referințe și variabile imutabile (immutable) în mod implicit și oferă o tipizare statică puternică pentru a minimiza erorile logice.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster