La conferința Linux Plumbers 2022 care are loc în aceste zile, un inginer de la Western Digital a susținut o prezentare despre dezvoltarea unui driver experimental pentru unități SSD cu interfața NVM-Express (NVMe), scris în limbajul Rust și rulând pe kernel-ul Linux. nivel. În ciuda faptului că proiectul este încă într-un stadiu incipient de dezvoltare, testele au arătat că performanța driverului NVMe în limbajul Rust corespunde driverului NVMe scris în limbajul C disponibil în kernel.


Raportul afirmă că actualul driver NVMe în C este complet satisfăcător pentru dezvoltatori, dar subsistemul NVMe este o platformă bună pentru a explora fezabilitatea dezvoltării driverelor în Rust, deoarece este destul de simplu, utilizat pe scară largă, are cerințe de performanță ridicată și are o implementare de referință dovedită pentru comparație și suportă diverse interfețe (dev, pci, dma, blk-mq, gendisk, sysfs).
Se observă că driverul PCI NVMe pentru Rust oferă deja funcționalitatea necesară funcționării, dar nu este încă pregătit pentru utilizare pe scară largă, deoarece necesită îmbunătățiri individuale. Planurile viitoare includ eliminarea codului de blocurile nesigure existente, suportarea operațiunilor de eliminare a dispozitivului și descărcare a driverelor, sprijinirea interfeței sysfs, implementarea inițializării leneșe, crearea unui driver pentru blk-mq și experimentarea utilizării unui model de programare asincron pentru queue_rq.

În plus, putem observa experimentele efectuate de Grupul NCC pentru a dezvolta drivere în limbajul Rust pentru nucleul FreeBSD. Ca exemplu, examinăm în detaliu un driver echo simplu care returnează datele scrise în fișierul /dev/rustmodule. În următoarea fază de experimentare, Grupul NCC ia în considerare posibilitatea reluării componentelor de bază ale nucleului în limbajul Rust pentru a îmbunătăți securitatea operațiunilor de rețea și fișiere.
Cu toate acestea, deși s-a demonstrat că este posibil să se creeze module simple în limbajul Rust, o integrare mai strânsă a Rust în nucleul FreeBSD va necesita muncă suplimentară. De exemplu, ei menționează necesitatea creării unui set de straturi de abstractizare peste subsisteme și structuri de kernel, similare cu suplimentele pregătite de proiectul Rust pentru Linux. În viitor, intenționăm să efectuăm experimente similare cu nucleul Illumos și să identificăm abstracții comune în Rust care ar putea fi utilizate în driverele scrise în Rust pentru Linux, BSD și Illumos.
Potrivit Microsoft și Google, aproximativ 70% dintre vulnerabilitățile produselor lor software sunt cauzate de manipularea nesigură a memoriei. Este de așteptat ca utilizarea limbajului Rust să reducă riscul vulnerabilităților cauzate de lucrul nesigur cu memoria și să elimine apariția erorilor, cum ar fi accesarea unei zone de memorie după ce aceasta a fost eliberată și depășirea memoriei tampon.
Siguranța memoriei este asigurată în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectului și a duratei de viață a obiectului (sfera de aplicare), precum și prin evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică implicit conceptul de referințe imuabile și variabile, oferă tastare statică puternică pentru a minimiza erorile logice.
Sursa: opennet.ru
