Pourquoi je suis excité que Rust arrive au noyau Linux


Un changement lent arrive sur le noyau Linux, et c'est aussi fondamental que pour les programmeurs: le langage même dans lequel ils écrivent. Une telle décision percutante doit être gérée attentivement, mais c'est une cause de célébration.

Dans quelle mesure le noyau Linux écrit en ce moment?

Le noyau Linux est le cœur du système d'exploitation, avec un contrôle de bas niveau des ressources comme la mémoire, le processeur et les systèmes de fichiers. C'est le type de logiciel caché à 99,99% des utilisateurs, mais cela affecte tout ce qui se passe sur votre ordinateur.

En rapport

Qu'est-ce que le noyau Linux, et pourquoi est-ce important?

Qu'y a-t-il au centre de tout cela?

Linus Torvalds a commencé à développer le noyau en 1991, en utilisant C (un langage de bas niveau) et un assemblage (à peu près aussi de niveau que possible). Malgré les tentatives d'introduire le soutien des langues de niveau supérieur, comme C ++ en 1997, le noyau est resté avec C depuis. Aujourd'hui encore, son référentiel GitHub rapporte que 98% du code du noyau sont écrits en C:

Un graphique montrant les langues utilisées dans le code du noyau Linux, avec C à 98,3% et rouille à 0,1%.

Outre l'échec de l'expérience C ++, la seule autre langue avec une participation potentielle dans le noyau a été la rouille. Une langue assez nouvelle, Rust 1.0 est arrivée en 2015 avec une syntaxe similaire à C, mais la conception des influences des langues à tous les niveaux. Les programmeurs avaient déjà expérimenté les versions antérieures du langage comme option pour la programmation des modules de noyau, avec une preuve de concept développée en 2013.

Depuis lors, les développeurs Linux ont pris des mesures pour utiliser la rouille dans le développement du noyau, bien que les progrès aient été plus lents que prévu. Le projet Rust for Linux a commencé en 2020 et a marqué le début d'un effort déterminé pour porter la rouille des conducteurs de noyau, dans le but de réduire les bogues. Cela a conduit à l'inclusion éventuelle de pilotes écrits par la rouille dans la version 6.8 du noyau, qui a été publié en décembre 2023.

En rapport

Qu'est-ce qu'un langage de programmation?

Vous êtes-vous déjà demandé ce que sont les langages de programmation?

Qu'est-ce qui change maintenant?

De plus en plus de conducteurs de rouille sont ajoutés au noyau Linux. Alors que Rust Code ne représente que 0,1% de la base de code totale, c'est encore 143 fichiers distincts sur toutes les facettes du noyau.

La version 6.16 du noyau a de la rouille pour les améliorations Linux pour corriger les conditions de course. Les mises à jour du noyau ont tendance à sortir tous les deux mois, donc le travail en cours de rouille est à jour et le projet est toujours très actif. Il semble que les développeurs du noyau aiment toujours poursuivre cette décision, même s'il y a eu des voix occasionnelles de dissidence.

Le conducteur Tyr pour les GPU ARM Mali est un exemple contemporain de rouille pour le travail Linux. Ce pilote graphique du noyau est écrit en rouille et vise à développer les travaux plus théoriques qui ont été effectués jusqu'à présent. Avoir un véritable pilote qui dépend de la compatibilité existante signifie qu'il y a un test réel pour les travaux effectués jusqu'à présent. Cela devrait aider à encourager les progrès plus rapides avec l'initiative Rust for Linux.

Pourquoi est-ce une bonne chose?

Le site Web de Rust le décrit actuellement comme:

Une langue permettant à tout le monde de créer des logiciels fiables et efficaces.

Cette instruction ne cible pas explicitement la programmation du noyau, mais le code au cœur d'un système d'exploitation, en particulier, doit être fiable et efficace.

L'un des principaux arguments de vente de Rust est sa sécurité mémoire. La façon dont une langue traite de l'attribution de la mémoire est un facteur qui détermine s'il s'agit d'une langue de bas niveau ou d'un langage de haut niveau. Les langages de bas niveau offrent aux programmeurs beaucoup de puissance, en les permettant de gérer la mémoire manuellement, mais s'attendant à ce qu'ils le fassent de manière responsable. Les langages de niveau supérieur ont tendance à protéger le programmeur, gérant l'allocation de la mémoire en leur nom. Un collecteur de déchets est souvent utilisé pour nettoyer automatiquement la mémoire, mais cela peut entraîner des inefficacités.

Rust a une approche différente: il utilise un système de propriété pour faire respecter les techniques de la mémoire sans nécessiter de collecteur d'ordures à forte intensité de traitement. La langue gère également la concurrence de la même manière, abordant une autre fonctionnalité qui est souvent une source de bogues.

En rapport

Qu'est-ce qu'une fuite de mémoire et que pouvez-vous faire à ce sujet?

Une fuite de mémoire peut faire fonctionner lentement votre ordinateur. Apprenez à en repérer un et à récupérer votre bélier.

Les bogues dans le noyau sont particulièrement insidieux car ils peuvent affecter tout autre code de programme qui se déroule en cours d'exécution. Ils peuvent également être difficiles à repérer et, puisque le code qu'ils habitent est hautement optimisé, difficile à diagnostiquer et à réparer. Les bogues du noyau peuvent également être beaucoup plus catastrophiques que les bogues dans les applications: ils peuvent réduire les systèmes entiers et ouvrir des trous de sécurité pour que les mauvais acteurs puissent exploiter.

Éviter ces bogues signifie que les développeurs de noyau doivent prendre leur temps et faire une attention particulière à leur travail. En bref, les bogues du noyau conduisent à des progrès plus lents. C'est une des raisons pour lesquelles je suis enthousiasmé par le passage à Rust. En éliminant certains types de bogues, il a le potentiel d'accélérer le développement du noyau et d'augmenter le taux de progrès.

La rouille gagne également en popularité. Bien que C soit encore plus populaire (20,3% contre 12,6% selon Enquête Stackoverflow de 2024), Rust rattrape son retard, et il est tout à fait possible que davantage de nouveaux programmeurs, maintenant ou bientôt, utilisent la rouille. Même si le noyau est lent à adopter des modules écrits en rouille en ce moment, le travail pour le préparer est précieux.

Et cela m'amène à mon dernier point: même considérer un langage alternatif est bénéfique. Avoir des yeux sur toutes les parties de la base de code, inspecter l'architecture, le rendre plus adaptable à d'autres langues, doit être une bonne chose.

En rapport

Pourquoi devriez-vous apprendre la rouille, surtout si vous êtes nouveau dans la programmation

La rouille est l'un des langages de programmation les plus récents, et il peut changer la façon dont vous voyez le code.



Vous pouvez lire l’article original (en Angais) sur le blogwww.howtogeek.com