Lors de la conférence Maintainers Summit qui se déroule actuellement, les résultats de l'expérimentation visant à ajouter la possibilité de développer des composants en Rust dans le noyau Linux ont été discutés. Les participants présents ont reconnu l'expérimentation comme réussie et ont décidé de faire passer le support de Rust dans la catégorie des composants principaux du noyau, retirant son étiquette de fonctionnalité expérimentale.
Il y a trois ans, la possibilité de développer des pilotes et des modules en Rust a été ajoutée au noyau 6.1. Depuis, des abstractions pour le développement de pilotes Rust pour GPU, systÚmes de fichiers, dispositifs de bloc, adaptateurs réseau et dispositifs USB ont été intégrées au noyau. Un pilote Rust pour le GPU NVIDIA, asahi pour le GPU Apple AGX, Tyr pour le GPU ARM Mali, et rust_ext2 pour le systÚme de fichiers Ext2 sont en développement. Une implémentation IPC Binder écrite en Rust a été acceptée dans le noyau. Le projet RROS développe un systÚme en temps réel pour le noyau Linux, écrit en Rust. Le support de Rust est inactif par défaut et ne fait pas de Rust une dépendance de construction obligatoire pour le noyau.
Selon les partisans de la promotion de Rust, ce langage élimine la plupart des erreurs trouvées dans le noyau et causées par des spécificités du langage C (corner cases), ce qui permet de se concentrer sur les erreurs logiques et les conditions de course lors des revues de code. Rust aide à éviter des problÚmes tels que l'accÚs à la mémoire aprÚs sa libération, le dépassement de tampon, le mauvais nettoyage des ressources lors du traitement des erreurs et l'oubli de vérifications des codes d'erreur retournés. L'utilisation de Rust pour le nouveau code permet également de réduire le temps de développement, grùce à une diminution des efforts nécessaires pour le débogage et à la rigueur du langage, qui détecte les erreurs à un stade précoce de l'écriture du code.
Les opposants à l'intégration de Rust dans le noyau estiment qu'il est inacceptable d'utiliser plusieurs langages de programmation dans des projets complexes : des bases de code mélangées compliquent le travail des mainteneurs, car elles les rendent dépendants du code dans un autre langage. Par exemple, en présence de liaisons en Rust, les développeurs de sous-systÚmes écrits en C doivent tenir compte de l'impact des modifications sur la continuité du fonctionnement des liaisons.
Source : opennet.ru
