Le projet Rust pour Linux progresse, mais le créateur de Linux a encore quelques conseils à donner pour le mettre en forme.

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é le 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.


Soutien financier et technique des géants technologiques

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 bénéficie 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.

Linus Torvalds, par exemple, avait quelques objections aux « paniques » causées par certains pilotes matériels du noyau Linux écrits en Rust.


Rust avance ses pions

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

Miguel 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-il.

« 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.


Des améliorations pour le compilateur Rust pour le noyau Linux

Il y a également des améliorations pour le compilateur Rust pour le noyau Linux. Jusqu'à présent, le projet de Miguel 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. A la fin de ce mois, la version 1.54 de rustc sera publiée, et nous passerons à cette version comme référence », note-t-il.

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. Miguel 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.


Intégration de Rust dans le noyau Linux

Miguel 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és sur Rust dans certains appareils Raspberry Pi.

En plus de tout cela, le projet de Miguel 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

Linus Torvalds a soulevé une objection potentielle à la suggestion de Miguel 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 de Miguel 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 », a dit Linus Torvalds 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. »

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