Lors de la conférence Linux Plumbers 2022 qui se déroule en ce moment, un ingénieur de l'entreprise Western Digital a présenté un exposé sur le développement d'un pilote expérimental pour les disques SSD utilisant l'interface NVM-Express (NVMe), écrit en Rust et fonctionnant au niveau du noyau Linux. Bien que le projet soit encore à un stade précoce de développement, les tests effectués ont montré que la performance du pilote NVMe en Rust correspond à celle du pilote NVMe existant dans le noyau, écrit en C.


Dans l'exposé, il est indiqué que le pilote NVMe actuel en C satisfait pleinement les développeurs, mais que la sous-systÚme NVMe est un bon terrain d'essai pour étudier la faisabilité du développement de pilotes en Rust, car il est assez simple, largement utilisé, exige des performances élevées, dispose d'une implémentation de référence éprouvée pour la comparaison et prend en charge diverses interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).
Il est notĂ© que le pilote PCI NVMe en Rust fournit dĂ©jĂ la fonctionnalitĂ© nĂ©cessaire au fonctionnement, mais n'est pas encore prĂȘt pour une utilisation gĂ©nĂ©ralisĂ©e car il nĂ©cessite des amĂ©liorations. Parmi les projets futurs, il est prĂ©vu d'Ă©liminer les blocs unsafe du code, de prendre en charge les opĂ©rations de suppression de pĂ©riphĂ©rique et de dĂ©chargement du pilote, de soutenir l'interface sysfs, de mettre en Ćuvre une initialisation diffĂ©rĂ©e, de crĂ©er un pilote pour blk-mq et d'expĂ©rimenter l'utilisation d'un modĂšle de programmation asynchrone pour queue_rq.

De plus, on peut noter les expériences menées par la société NCC Group concernant le développement de pilotes en Rust pour le noyau FreeBSD. à titre d'exemple, un simple pilote echo est examiné en détail, retournant les données écrites dans le fichier /dev/rustmodule. Lors de la prochaine étape des expériences, NCC Group envisage de retravailler en Rust les composants de base du noyau pour améliorer la sécurité des opérations réseau et de fichiers.
Cependant, bien que la possibilitĂ© de crĂ©er des modules simples en Rust ait Ă©tĂ© dĂ©montrĂ©e, une intĂ©gration plus profonde de Rust dans le noyau FreeBSD nĂ©cessitera un travail supplĂ©mentaire. Par exemple, il est mentionnĂ© qu'il est nĂ©cessaire de crĂ©er un ensemble de couches d'abstraction au-dessus des sous-systĂšmes et des structures du noyau, similaires aux extensions prĂ©parĂ©es par le projet Rust for Linux. Ă l'avenir, des expĂ©riences similaires sont prĂ©vues avec le noyau Illumos et des abstractions communes en Rust seront mises en Ă©vidence, pouvant ĂȘtre utilisĂ©es dans les pilotes Ă©crits en Rust pour Linux, BSD et Illumos.
Selon des données fournies par Microsoft et Google, environ 70 % des vulnérabilités dans leurs produits logiciels sont causées par une gestion de la mémoire non sécurisée. On suppose que l'utilisation du langage Rust permettra de réduire le risque d'apparition de vulnérabilités dues à une gestion de la mémoire non sécurisée, et d'éliminer des erreurs telles que l'accÚs à une zone mémoire aprÚs libération et le dépassement de tampon.
La sécurité de la mémoire est assurée dans Rust au moment de la compilation par la vérification des références, le suivi de la propriété des objets et la prise en compte de la durée de vie des objets (portée), ainsi que par l'évaluation de l'accÚs à la mémoire lors de l'exécution du code. Rust fournit également des moyens de protection contre les débordements d'entiers, exige l'initialisation obligatoire des variables avant leur utilisation, gÚre mieux les erreurs dans la bibliothÚque standard, applique le concept de références et de variables immuables par défaut, et propose une forte typage statique pour minimiser les erreurs logiques.
Source : opennet.ru
