La prise en charge de Rust pour le noyau Linux fait face aux critiques de Torvalds

Linus Torvalds a passé en revue les correctifs qui implémentaient la possibilité de créer des pilotes dans le langage Rust pour le noyau Linux et a formulé quelques commentaires critiques.

Les plus grandes plaintes concernaient la possibilité potentielle de panic() dans des situations d'erreur, par exemple dans une situation de mémoire faible, lorsque les opérations d'allocation dynamique de mémoire, y compris au sein du noyau, peuvent échouer. Torvalds a déclaré qu'une telle approche dans le noyau est fondamentalement inacceptable et que, si ce point n'est pas compris, il peut complètement NAKER tout code qui tente d'utiliser une telle approche. D'un autre côté, le développeur du correctif est d'accord avec ce problème et le considère comme résoluble.

Un autre problème concernait les tentatives d'utilisation de types à virgule flottante ou 128 bits, qui ne sont pas acceptables pour des environnements tels que le noyau Linux. Cela s'est avéré être un problème plus grave, car pour le moment, la bibliothèque principale de Rust est indivisible et représente un gros blob - il n'y a aucun moyen de demander uniquement certaines fonctionnalités, empêchant l'utilisation de l'une ou l'autre fonctionnalité problématique. La résolution du problème peut nécessiter des modifications du compilateur Rust et des bibliothèques, bien que pour le moment, l'équipe n'ait pas encore de stratégie sur la manière de mettre en œuvre la modularisation des bibliothèques de langage.

De plus, Torvalds a noté que l'exemple de pilote fourni était inutile et nous a conseillé d'utiliser comme exemple un pilote qui résout l'un des vrais problèmes.

Mise à jour : Google a annoncé sa participation à l'initiative visant à intégrer la prise en charge de Rust dans le noyau Linux et a fourni les raisons techniques de l'introduction de Rust pour lutter contre les problèmes résultant d'erreurs de mémoire. Google estime que Rust est prêt à rejoindre C comme langage de développement des composants du noyau Linux. L'article fournit également des exemples d'utilisation du langage Rust pour développer des pilotes de noyau, dans le contexte de leur utilisation dans la plateforme Android (Rust est reconnu comme un langage officiellement pris en charge pour le développement Android).

Il est à noter que Google a préparé un premier prototype d'un pilote écrit en Rust pour le mécanisme de communication interprocessus Binder, qui permettra une comparaison détaillée des performances et de la sécurité des implémentations de Binder en C et Rust. Dans sa forme actuelle, le travail n'est pas encore terminé, mais pour presque toutes les abstractions de base des fonctionnalités du noyau nécessaires au fonctionnement de Binder, des couches ont été préparées pour utiliser ces abstractions dans le code Rust.

Source: opennet.ru

Ajouter un commentaire