WD està desenvolupant un controlador NVMe a Rust. Experimentant amb Rust a FreeBSD

A la conferència de Linux Plumbers 2022 en curs d'aquests dies, un enginyer de Western Digital va fer una presentació sobre el desenvolupament d'un controlador experimental per a SSD NVM-Express (NVMe) escrits a Rust i que s'executen al nivell del nucli de Linux. Malgrat que el projecte encara es troba en una fase inicial de desenvolupament, les proves realitzades van demostrar que el rendiment del controlador Rust NVMe correspon al controlador NVMe escrit en C al nucli.

WD està desenvolupant un controlador NVMe a Rust. Experimentant amb Rust a FreeBSD
WD està desenvolupant un controlador NVMe a Rust. Experimentant amb Rust a FreeBSD

L'informe diu que el controlador NVMe actual en C és completament satisfactori per als desenvolupadors, però el subsistema NVMe és una bona plataforma per explorar la viabilitat de desenvolupar controladors a Rust, ja que és bastant senzill, s'utilitza àmpliament, té requisits d'alt rendiment i té una implementació de referència provada per a la comparació i admet diverses interfícies (dev, pci, dma, blk-mq, gendisk, sysfs).

Cal assenyalar que el controlador Rust PCI NVMe ja proporciona la funcionalitat necessària per al funcionament, però encara no està preparat per a un ús generalitzat, ja que requereix millores per separat. Els plans per al futur inclouen desfer-se dels blocs insegurs existents, suport per eliminar el dispositiu i descarregar el controlador, donar suport a la interfície sysfs, implementar la inicialització mandrosa, crear un controlador per a blk-mq i experimentar amb un model de programació asíncron per a queue_rq.

A més, podem destacar els experiments realitzats pel Grup NCC per desenvolupar controladors en el llenguatge Rust per al nucli FreeBSD. Com a exemple, s'analitza amb detall un controlador d'eco senzill que retorna dades escrites al fitxer /dev/rustmodule. En la següent fase d'experimentació, el grup NCC està considerant la reelaboració dels components bàsics bàsics a Rust per millorar la seguretat de les operacions de la xarxa i dels fitxers.

Dit això, tot i que s'ha demostrat que és possible crear mòduls senzills a Rust, una integració més estreta de Rust al nucli de FreeBSD requerirà treball addicional. Per exemple, esmenta la necessitat de crear un conjunt de capes d'abstracció sobre subsistemes i estructures del nucli, similars als complements preparats pel projecte Rust per a Linux. En el futur, es preveu dur a terme experiments similars amb el nucli Illumos i destacar les abstraccions comunes a Rust que es podrien utilitzar en els controladors escrits per Rust per a Linux, BSD i Illumos.

Segons Microsoft i Google, al voltant del 70% de les vulnerabilitats dels seus productes de programari són causades per una gestió insegura de la memòria. Se suposa que l'ús del llenguatge Rust reduirà el risc de vulnerabilitats causades per un maneig insegur de la memòria i eliminarà l'aparició d'errors com ara accedir a una àrea de memòria després d'haver-se alliberat i desbordaments de memòria intermèdia.

La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la comprovació de referències, el seguiment de la propietat i la vida útil de l'objecte (abast), així com mitjançant l'avaluació de la correcció de l'accés a la memòria durant l'execució del codi. Rust també proporciona protecció contra desbordaments d'enters, requereix la inicialització obligatòria dels valors de les variables abans de l'ús, gestiona millor els errors a la biblioteca estàndard, aplica el concepte de referències i variables immutables per defecte, ofereix una escriptura estàtica forta per minimitzar els errors lògics.

Font: opennet.ru

Afegeix comentari