Opinion Linus Torvalds est heureux de vous dire que les numéros de version de Linux ne sont pas un gros problème.

Comme l’a dit le supremo Linux à propos de la version 6.0 : “Malgré le changement majeur de nombre, il y a rien de fondamentalement différent dans cette version – J’ai longtemps évité l’idée que les nombres majeurs ont un sens, et la seule raison d’un système de numérotation “hiérarchique” est de faciliter la mémorisation et la distinction des nombres.”

Avec 6.1, cependant, il y a quelque chose de fondamentalement différent. Pour la première fois dans l’histoire de Linux, en plus du C, vous pourrez utiliser un autre langage, Rust, pour le développement du noyau.

Pourquoi? Comme l’a dit Wedson Almeida Filho de l’équipe Android de Google : “Nous pensons que Rust est maintenant prêt à rejoindre C comme langage pratique pour implémenter le noyau. Cela peut nous aider à réduire le nombre de bogues potentiels et de vulnérabilités de sécurité dans le code privilégié tout en jouant bien avec le noyau central et en préservant ses caractéristiques de performance. »

Plus précisément, comme Alex Gaynor et Geoffrey Thomas l’ont expliqué lors du Linux Security Summit 2019, près des deux tiers des failles de sécurité du noyau Linux [PDF] proviennent de problèmes de sécurité de la mémoire. Et d’où viennent-ils ? Faiblesses inhérentes à C et C++. Rust, d’autre part, évite ces problèmes en utilisant interfaces de programmation d’applications beaucoup plus sûres (Apis). La rouille est tout simplement plus sûre que C.

Récemment, la National Security Agency (NSA) des États-Unis, qui est chargée de sécuriser le code ainsi que de le casser, a suggéré que l’une des meilleures choses que vous puissiez faire pour votre la sécurité du programme consiste à utiliser des langages sécurisés en mémoire tels que Rust au lieu de C. Bien sûr, il existe d’autres langages de ce type, tels que Swift, Go ou C #, mais ils ne se prêtent pas au type de programmation de bas niveau nécessaire à un système d’exploitation.

Ce n’est pas qu’une théorie. Ça marche. Google, par exemple, utilise maintenant largement Rust dans Android. Là, “l’objectif n’est pas de convertir le C/C++ existant en Rust, mais plutôt de déplacer le développement de nouveau code vers des langages sécurisés en mémoire heures supplémentaires”

Le résultat? “Alors que la quantité de nouveaux codes dangereux pour la mémoire entrant dans Android a diminué, le nombre de vulnérabilités de sécurité de la mémoire a également diminué. De 2019 à 2022, il est passé de 76 % à 35 % des vulnérabilités totales d’Android. 2022 est la première année où les vulnérabilités de sécurité de la mémoire ne représentent pas la majorité des vulnérabilités d’Android.” Ce n’est pas trop minable.

Bien sûr, ce n’est pas parce que quelque chose est plus sûr que tout le monde voulait l’adopter. Après tout, les développeurs ont passé près de 30 ans à travailler sur Linux en C. Les développeurs étaient tous préoccupés par la quantité de travail nécessaire pour intégrer Rust à Linux. Par exemple, pour obtenir le Pilote Rust Linux NVMe pour fonctionner, 70 extensions Rust non standard étaient nécessaires.

Mais, comme Torvalds me l’a dit plus tôt cette année, “Nous utilisons des exceptions à la norme C depuis des décennies.”

Si vous avez fait vos premières armes en programmation sur C et que vous dormez avec une copie de K&R sous votre oreiller, ne vous inquiétez pas. Rust ne remplacera pas C dans le noyau à aucun moment de cette décennie.

Comme Torvalds l’a expliqué, Rust “aura juste l’infrastructure de base (c’est-à-dire pas encore de cas d’utilisation sérieux)”. Plus précisément, vous pouvez vous attendre à voir Rust faire sa première apparition dans les pilotes Linux.

Miguel Ojeda, développeur du noyau Linux qui a dirigé les efforts pour intégrer Rust dans le noyau, a ajouté : “Le noyau est un projet énorme avec de nombreuses parties prenantes. Depuis le début, il était clair que l’ajout d’un deuxième langage “principal” au noyau poserait des problèmes à la fois techniques et de gestion. .”

Ainsi, a expliqué Ojeda, le premier travail de Rust que vous verrez dans les noyaux Linux sera “Abstractions de rouille pour les sous-systèmes et pilotes d’écriture et autres modules.”

Qu’est-ce que cela signifie pour les développeurs de la vieille école ? Dans l’introduction d’Ojeda à son dernier ensemble de patchs, il a dit, “le les installations introduites font partie du « noyau de rouille ». Ils n’interagissent pas avec le côté C de nouvelles façons majeures (aucun nouveau type C utilisé ; seulement strlen, memchrdes codes d’erreur supplémentaires, etc. printk chaînes de formatage).”

Ojeda a également ajouté : “Pratiquement tout le code est dans linux-next depuis des mois.”

En d’autres termes, Rust est introduit lentement et régulièrement dans le noyau. Aucun changement rapide n’est imposé aux développeurs du noyau. En effet, la plupart de ces modifications les plus récentes ne seront même pas intégrées au noyau 6.1. Ils sont beaucoup plus susceptibles de faire leur première apparition dans le noyau 6.2.

Mais, avec la sortie de la 6.1, qui, croisons les doigts, devrait paraître le 12 décembre, Rust fera officiellement de Linux un système d’exploitation bilingue. Et cela, mes amis, est vraiment une grande nouvelle. ®

Leave a Reply