Nouvelle version des patchs pour le noyau Linux avec support du langage Rust

Miguel Ojeda, auteur du projet Rust-for-Linux, a proposé la publication de composants v5 pour développer des pilotes de périphériques dans le langage Rust pour examen par les développeurs du noyau Linux. Il s'agit de la sixième édition des correctifs, prenant en compte la première version, publiée sans numéro de version. La prise en charge de Rust est considérée comme expérimentale, mais elle est déjà incluse dans la branche Linux-next et est suffisamment développée pour commencer à travailler sur la création de couches d'abstraction sur les sous-systèmes du noyau, ainsi que sur l'écriture de pilotes et de modules. Le développement est financé par Google et l'ISRG (Internet Security Research Group), fondateur du projet Let's Encrypt et qui promeut HTTPS et le développement de technologies pour améliorer la sécurité sur Internet.

Rappelons que les changements proposés permettent d'utiliser Rust comme deuxième langage pour développer des pilotes et des modules du noyau. La prise en charge de Rust est présentée comme une option qui n'est pas activée par défaut et n'entraîne pas l'inclusion de Rust en tant que dépendance de construction requise pour le noyau. L'utilisation de Rust pour le développement de pilotes vous permettra de créer des pilotes plus sûrs et de meilleure qualité avec un minimum d'effort, sans problèmes tels que l'accès à la mémoire après la libération, les déréférences de pointeurs nuls et les dépassements de tampon.

Une gestion sécurisée de la mémoire est assurée dans Rust au moment de la compilation grâce à la vérification des références, au suivi de la propriété des objets et de leur durée de vie (portée), ainsi qu'à l'évaluation de l'exactitude de l'accès à la mémoire pendant l'exécution du code. Rust offre également une protection contre les débordements d'entiers, nécessite l'initialisation obligatoire des valeurs des variables avant 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, propose un typage statique fort pour minimiser les erreurs logiques.

La nouvelle version des correctifs continue d'éliminer les commentaires formulés lors de la discussion des première, deuxième, troisième, quatrième et cinquième éditions des correctifs. Dans la nouvelle version :

  • La boîte à outils a été mise à jour pour publier Rust 1.59.0. Une variante de la bibliothèque alloc est également synchronisée avec la nouvelle version de Rust, éliminant ainsi la génération possible d'un état de « panique » lorsque des erreurs se produisent, comme un manque de mémoire. La possibilité d'utiliser des inserts assembleur (« feature(global_asm) ») a été stabilisée.
  • Ajout de la prise en charge de la création de programmes hôtes dans Rust utilisés lors de la compilation du noyau.
  • Au lieu de fournir des fichiers de spécifications de plate-forme cible pré-générés, ils sont générés dynamiquement en fonction de la configuration du noyau.
  • Ajout du paramètre de noyau HAVE_RUST pour l'activer pour les architectures prenant en charge Rust.
  • Des abstractions sont proposées pour être utilisées dans le code Rust pour un générateur matériel de nombres pseudo-aléatoires.
  • Autorisé l'utilisation de codes d'erreur sans le préfixe "Error::" (par exemple, "return Err(EINVAL)") pour se rapprocher de la gestion des codes d'erreur en C.
  • Ajout du type "CString" pour les chaînes C personnalisées. Les types Formatter et Buffer ont été combinés.
  • Ajout des types Bool et LockInfo.
  • La mise en œuvre des verrous tournants a été simplifiée.

Source: opennet.ru

Ajouter un commentaire