Rust fait un nouveau pas vers le noyau Linux

Spread the love
 Rust fait un nouveau pas vers le noyau Linux

Le projet soutenu par Google visant à faire de Rust le deuxième langage de programmation dans le développement du noyau Linux après le C vient de franchir une étape importante.

La clé du projet est le développeur Miguel Ojeda, basé en Espagne, qui a mené la projet pour amener le langage de programmation Rust, adopté par Mozilla, dans le noyau Linux.

Il a rédigé une première demande de commentaires (RFC) proposant l’adoption de Rust pour le noyau Linux le mois dernier, et a partagé dimanche sa dernière RFC sur le projet.

Rust et le compilateur Rust sont deux éléments clés auxquels les développeurs ont pris goût, malgré une courbe d’apprentissage relativement raide pour ceux qui écrivent en C et C++.

L’idée est que de nouvelles parties du noyau Linux peuvent être écrites en Rust plutôt que de réécrire les 30 millions de lignes de code qui composent aujourd’hui le noyau.

Le langage Rust a bénéficié du soutien financier et technique d’Amazon Web Services, de Google, de Microsoft, de Facebook et d’autres organisations en raison de sa capacité à détecter les problèmes de sécurité liés à la mémoire avant que le code n’arrive en production.

Linux, bien sûr, est au cœur d’une grande partie de l’infrastructure de l’internet, faisant fonctionner la plupart des infrastructures cloud et des serveurs web du monde.

Mais des questions demeurent quant à savoir si le créateur de Linux, Linus Torvalds, et d’autres développeurs clés du noyau adopteront la proposition Rust ou la rejetteront. Torvalds, par exemple, avait quelques objections aux “paniques” causées par certains pilotes matériels du noyau Linux écrits en Rust.

publicité

Rust avance ses pions

La question clé est de savoir si le RFC et la demande de pull d’Ojeda seront fusionnés avec le projet principal du noyau Linux.

Ojeda a souligné certaines des principales améliorations de Rust, y compris le sujet des paniques.

“Nous avons supprimé les allocations infaillibles. Pour ce faire, nous avons intégré un sous-ensemble du crate de la bibliothèque standard alloc, avec quelques ajouts. Cela nous permet d’adapter les choses à nos besoins, tout en donnant en amont le temps dont ils ont besoin pour évaluer nos changements”, écrit Ojeda.

“Finalement, l’objectif est d’avoir tout ce dont le noyau a besoin dans alloc en amont et de le supprimer de l’arbre du noyau. Nous avons déjà commencé ce processus et certains changements ont déjà été acceptés.”

De plus, alloc est maintenant compilé avec les méthodes d’allocation de panique désactivées, empêchant leur utilisation dans le noyau par erreur, dit-il.

Il y a également des améliorations pour le compilateur Rust pour le noyau Linux. Jusqu’à présent, le projet d’Ojeda utilisait des versions nightly du compilateur (rustc). Désormais, le noyau peut être compilé avec les versions bêta et stable de rustc.

“Pour le moment, nous utilisons la version 1.54-beta1 comme compilateur de référence. À la fin de ce mois, la version 1.54 de rustc sera publiée, et nous passerons à cette version comme référence”, note Ojeda.

Le compilateur Rust est une partie importante du langage, offrant aux développeurs des messages d’erreur utiles, des outils et un support pour la complétion de code dans des éditeurs de code populaires comme VS Code de Microsoft, VIM et Intellij IDEA.

Il reste cependant encore du travail à faire. Ojeda note que le noyau Linux utilise encore des fonctionnalités instables, même s’il est compilé avec une version stable de rustc.

“Nous ne pouvons donc pas garantir que les futures versions de rustc fonctionneront sans modifications de l’arbre du noyau”, prévient-il.

Ojeda et ses collaborateurs ont travaillé sur GNU Compiler Collection (GCC) for Rust, un frontal GCC pour Rust. Il existe de nouveaux composants Rust qui utilisent les implémentations C du noyau Linux pour les pilotes, avec des mises à jour pour Binder, un composant pour communiquer avec le pilote du noyau, ainsi que des travaux sur le générateur de nombres aléatoires basé sur Rust dans certains appareils Raspberry Pi.

En plus de tout cela, le projet d’Ojeda bénéficie désormais du soutien de l’équipe Linux de Microsoft, du concepteur de puces Arm, de Google et d’IBM.

Le groupe Linux Systems de Microsoft veut contribuer à l’intégration de Rust dans le noyau Linux. Ojeda espère soumettre certains pilotes Hyper-V écrits en Rust dans les mois à venir.

Arm travaille avec la communauté Rust pour améliorer Rust pour les systèmes basés sur Arm. Par exemple, la contribution RFC d’Arm au langage Rust a fait de Linux sur les systèmes Arm 64 bits une plateforme Rust de niveau 1. Google soutient et contribue directement au projet Rust pour Linux. L’équipe Rust Android travaille à une nouvelle implémentation de Binder, où d’autres pilotes pourraient utiliser une réécriture Rust. IBM soutient le support du noyau Linux Rust pour PowerPC.

Le problème boutiste

Torvalds a soulevé une objection potentielle à la suggestion d’Ojeda sur le “boutisme“, un concept de mémoire informatique, concernant l’emplacement des octets dans les adresses mémoire. Deux conventions s’opposent sur ce sujet l’approche “gros boutiste” ou “petit boutiste”. Le projet d’Ojeda adopte une approche “gros boutiste”

“Essayons simplement de mettre fin aux données gros boutiste, c’est dégoûtant et ça devrait déjà mourir”, Torvalds a dit en réponse au RFC d’Ojeda. “L’approche gros boutiste est pratiquement morte de toute façon, nous ne devrions pas ajouter de nouveaux cas. L’utilisation de cette approche dans le réseau provient de l’époque où les guerres de commandes d’octets étaient encore une réalité, mais ces jours sont révolus. Linus.”

Via The Register, Torvalds a déclaré que Rust pourrait être intégré dans la version 5.14 de Linux.

Le projet Rust pour Linux est open source et peut être consulté ici sur GitHub.

Source : “ZDNet.com”

Leave a Reply