Linux 5.13 a été publié fin juin sans le support du langage Rust, mais Linus Torvalds avait déclaré en avril que le projet Rust for Linux a maintenant beaucoup avancé et pourrait être fusionné avec la prochaine mouture du noyau, Linux 5.14. Dans une lettre publiée le 6 décembre, Miguel Ojeda, chef du projet Rust pour Linux, présente explique les principaux changements et mises à jour effectués depuis la version 1 du noyau linux. « Il s'agit de la série de patchs (v2) pour ajouter le support de Rust comme second langage au noyau Linux », a déclaré Miguel dans la liste de diffusion publié le 6 décembre.
Les développeurs de Linux discutent depuis un moment de la perspective de permettre l'utilisation du langage développé par Mozilla Research pour écrire de nouveaux pilotes de périphériques pour le noyau. L'année dernière, les développeurs du noyau Linux semblent s'être mis d'accord sur le sujet. Pour mémoire, Rust est plébiscité, car il offre plusieurs avantages, notamment en ce qui concerne la mémoire. Les partisans de Rust ont cité des travaux qui montrent qu'environ deux tiers des vulnérabilités du noyau auxquelles ont été attribués des CVE sur Android et Ubuntu sont tous liés à des problèmes de sécurité de la mémoire.
Dans un post publié sur son blog le 14 avril, l’équipe de développement de Google a annoncé qu’elle participe à l'évaluation du langage Rust pour le développement du noyau Linux. Suite à cette déclaration, Linus Torvalds, ingénieur logiciel, créateur principal et développeur du noyau Linux, a déclaré lors d’une interview que des discussions sur le sujet seraient beaucoup plus importantes qu'un long post de Google sur le langage. Interrogé sur la suggestion d'un internaute qui a indiqué que, « la solution ici est simple : il suffit d'utiliser C++ au lieu de Rust », Linus Torvalds n'a pas pu se retenir et aurait même traité le C++ de « langage de m... ».
Rappelons qu’au mois de mars, le tout premier support permettant l'utilisation du langage de programmation Rust dans le noyau Linux est apparu dans l'arbre Linux-Next pour des tests plus étendus avant son inclusion éventuelle dans le noyau principal. Juste derrière, une "demande de commentaires" a été relancée sur la liste de diffusion du noyau autour des perspectives du code Rust pour le noyau Linux. Miguel Ojeda, développeur du noyau Linux, a lancé une proposition de RFC (Request For Comments) sur la liste de diffusion du noyau Linux.
Miguel Ojeda, a lancé une proposition de RFC sur la liste de diffusion du noyau Linux. Le message de la liste de diffusion décrivait les convictions des développeurs impliqués dans l'ajout du code Rust au noyau, les avantages tels que l'amélioration de la sécurité de la mémoire, et plus encore. « Certains d'entre vous ont remarqué ces dernières semaines et ces derniers mois qu'une tentative sérieuse d'apporter un second langage au noyau était en train de se forger. Nous y sommes enfin, avec une RFC qui ajoute le support pour Rust au noyau Linux », avait déclaré Miguel Ojeja. « Nous savons qu'il y a des coûts et des risques énormes à introduire un nouveau langage dans le noyau », avait-il ajouté. Voici, ci-dessous, les améliorations qui ont été apportées au support général de Rust :
Stabilité du compilateur
L’équipe du projet Rust pour Linux est passée du compilateur Rust beta à l'utilisation des versions stables, en migrant à chaque fois qu'une nouvelle version est publiée. En mettant à jour le compilateur, L’équipe a été en mesure de retirer de la liste quelques fonctionnalités instables : const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic et try_reserve.
Personnalisation de `core` et `alloc`
Quelques options de modularisation supplémentaires ont été ajouté à alloc afin de désactiver certaines fonctionnalités inutiles : no_rc et no_sync. « Nous aimerions remercier Rust pour avoir travaillé avec nous sur ces options afin que le noyau puisse les utiliser », a déclaré Miguel. En amont, afin que le cas d'utilisation du noyau soit bien pris en charge, ou, plus précisément, la "combinaison" d'options dont le noyau a besoin, Upstream core a aussi ajouté no_fp_fmt_parse.
Rust a activé un certain nombre de diagnostics supplémentaires pour le compilateur Rust et de Clippy
lints. Une différence par rapport à C est que les diagnostics Rust sont un peu plus faciles à désactiver dans le code ce qui apporte plus de rigueur dans le cas général.
Abstractions et mises à jour des pilotes L’équipe a ajouté des abstractions pour les verrous de séquence, les callbacks de gestion d'énergie, la mémoire io (readX/writeX), les puces irq et les gestionnaires de flux de haut niveau, les puces gpio (y compris les puces irq), les périphériques, les périphériques amba et les pilotes.
Le support des pilotes est amélioré avec une infrastructure indépendante du bus, des objets révocables, des mutex révocables, des itérateurs de bits efficaces, de meilleurs diagnostics de panique et des wrappers de pointeurs simplifiés. De plus, elle a amélioré et simplifié les objets Ref (soutenus par refcount_t) et remplacé toutes les instances de Rust. Un nouveau pilote pour les périphériques gpio PL061 a été implémenté et est soumis en tant que patch RFC.
Le support de Rust est toujours considéré comme expérimental. Cependant, le support est assez bon pour que les développeurs de noyaux commencent à travailler sur les abstractions Rust pour les sous-systèmes et à écrire des pilotes et autres modules. La série actuelle vient d'arriver dans Linux-next, donc la première exécution aura lieu cette semaine.
Source : Liste de diffusion
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi :
Linus Torvalds souligne une bonne avancée du langage Rust dans le développement du noyau Linux, et aurait qualifié le C++ de « langage de m... », après le message de Google
Les derniers correctifs du projet Rust for Linux montrent que le langage Rust avance à grands pas vers le noyau, Torvalds estime que cela pourrait être prêt pour la version 5.14
La prise en charge de Rust pour le développement du noyau Linux commence à prendre forme, le langage fait un premier pas vers la branche "Linux-Next"
L'année 2020 est-elle celle de Rust au sein du noyau Linux ? C'est ce que suggère une sortie de Linus Torvalds, qui donne des instructions sur l'introduction de son support au système de build
Plusieurs améliorations ont été apportées au support de Rust dans le noyau Linux,
Personnalisation de core et alloc, abstractions et mises à jour des pilotes
Plusieurs améliorations ont été apportées au support de Rust dans le noyau Linux,
Personnalisation de core et alloc, abstractions et mises à jour des pilotes
Le , par Bruno
Une erreur dans cette actualité ? Signalez-nous-la !