La branche linux-next, sur laquelle sera basé le lancement du noyau Linux 5.13, inclut un ensemble initial de composants pour le développement de pilotes de périphériques en Rust. Une documentation concernant l'utilisation de Rust dans le noyau Linux a été publiée séparément, ainsi qu'un exemple de module de noyau avec un pilote de dispositif haut niveau en Rust. Le code a été ajouté par Stephen Rothwell, le mainteneur de la branche Linux-next. En général, la branche Linux-next comprend du code prêt à être intégré lors du prochain cycle d'acceptation des modifications pour le noyau, mais il n'est pas encore clair si le support de Rust sera accepté par Linus Torvalds dans le cadre de Linux 5.13, d'autant plus que le code n'a pas encore été revu par un large éventail de développeurs.
Le support pour le développement de pilotes du noyau Linux en Rust a été activement discuté l'année dernière, y compris avec la participation de Linus Torvalds, qui n'a pas écarté cette possibilité. Greg Kroah-Hartman, responsable du support de la branche stable du noyau Linux, a également soutenu l'idée. L'utilisation de Rust pour le développement de pilotes permettra de créer des pilotes sûrs et de meilleure qualité avec un minimum d'efforts, éliminant ainsi des problèmes tels que l'accès à la mémoire après sa libération, la déréférence de pointeurs nuls et le dépassement de tampon.
Pour activer le support de Rust dans la branche linux-next, une option CONFIG_RUST («Support Rust» dans le menu «Configuration générale») a été ajoutée à KConfig. Lorsque cette option est activée, la présence du compilateur rustc dans le système est vérifiée, et en sa présence, il est possible d'activer les autres composants liés à Rust (par exemple, la section «Rust hacking» apparaît dans le menu «Kernel hacking»). L'utilisation de Rust est considérée comme une option, non activée par défaut et ne rendant pas Rust obligatoire dans les dépendances de construction du noyau.
La compilation des composants du noyau en Rust est possible à la fois avec GCC et avec Clang. Pour utiliser Rust dans le noyau, il est nécessaire d'installer les dernières versions nocturnes du compilateur rustc, datant d'au moins de la branche nightly-2021-02-20 (il est prévu d'ajouter le support des versions stables de Rust, mais pour l'instant, il est lié à certaines fonctionnalités expérimentales). Il est aussi nécessaire d'avoir dans le système les bibliothèques standard de Rust fournies dans le paquet rust-src et le générateur de liaisons bindgen. Le support est encore limité aux plateformes x86_64 et ARM64.
Source : opennet.ru
