IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le mélange de Rust et de C dans Linux est assimilé à un « cancer » par un responsable du noyau,
« je ne veux pas qu'il s'approche d'une énorme base de code C que je dois maintenir », dit-il à propos de Rust

Le , par Mathis Lucas

30PARTAGES

18  0 
Linus Torvalds annonce que Rust for Linux est susceptible d’être prêt pour la version 5.20 du noyau
Dans un contexte où le langage Rust apparaît comme candidat idéal à la mise au rebut du langage C

Les principaux mainteneurs du noyau Linux ont un âge qui commence par le chiffre 5. Certains se rapprochent même de la soixantaine. Du coup, la communauté du célèbre noyau open source commence à penser au changement de générations. Une nouvelle dont la tranche d’âge se situe dans la trentaine gravit les échelons, mais comme Linus lui-même le souligne : « Il s'avère qu'il est vraiment difficile de trouver des personnes qui sont des mainteneurs » ; un fait lié à ceci que le développement du kernel Linux continue de se faire en C et assembleur – des langages auxquels la vieille génération est plus accoutumée ? C’est une possibilité et elle est susceptible d’expliquer pourquoi 2022 pourrait être l’année du langage Rust au sein du noyau Linux. Linus Torvalds annonce en effet que Rust for Linux est susceptible d’être prêt pour la version 5.20 du noyau.

Linus Torvalds et Dirk Hohndel ont eu leur habituelle échange lors d’une session de l’édition 2022 de l’Open Source Summit. Linus Torvalds commentait alors sur les évolutions du projet Rust for Linux en soulignant qu’il est susceptible d’être prêt pour Linux 5.20. Les publications de Miguel Ojeda, chef du projet Rust for Linux, avait déjà permis de dresser une liste des progrès de l’initiative : support d’un compilateur Rust bêta, test du support des architectures ARM et RISC-V, nouvelles abstractions Rust, etc.


15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans (chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE)) sont liées à des tares que traînent le langage C : problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. Linus Torvalds s’est penché il y a peu sur un potentiel problème de sécurité avec les fonctions primitives d'exécution spéculative de la liste liée du noyau écrit en ANSI C. C’est en corrigeant ce problème qu’il s’est rendu compte qu’en C99 l'itérateur passé aux macros de parcours de liste doit être déclaré dans une portée en dehors de la boucle elle-même. C’est de ce constat que venait sa récente décision de faire passer le noyau Linux au C moderne (C11) dont la normalisation est achevée en 2011. C’est le genre de raisons techniques susceptibles de justifier la mise au rebut du langage C au profit du Rust pour le développement du noyau sur le long terme.

La nouvelle arrive dans un contexte où le regard de Linus Torvalds sur le langage Rust a changé. En effet, la prise en charge de Rust pour le développement du noyau Linux commence à prendre forme et est vue comme une « une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr. » Rust de Mozilla Research est le type de langage de programmation auquel ceux qui écrivent du code pour des systèmes d’entrée/sortie de base (BIOS), des chargeurs d’amorce, des systèmes d’exploitation, etc. portent un intérêt. D’avis d’observateurs avertis, c’est le futur de la programmation système en lieu et place du langage C. En effet, des experts sont d’avis qu’il offre de meilleures garanties de sécurisation des logiciels que le couple C/C++. Chez AWS on précise que choisir Rust pour ses projets de développement c’est ajouter l’efficacité énergétique et la performance d’exécution du C à l’atout sécurité.

Et vous ?

La difficulté de trouver des mainteneurs est-elle la conséquence de ce que le développement du noyau Linux continue de se faire en C et en assembleur au moment où les développeurs s’intéressent de plus en plus à des langages comme Rust ?
Êtes-vous aussi d’avis que la communauté Linux anticipe non seulement sur les départs en retraite des actuels mainteneurs et sur les qualités que Rust offre en comparaison au langage C ?
Pourquoi le langage C pourrait encore avoir de longues années devant lui ?
Le C a-t-il vraiment besoin d’un remplaçant en matière de programmation système ?
Le problème avec le C n’est-il pas plutôt le mauvais usage que certains développeurs en font ?
Voyez-vous des firmes comme Intel faire migrer des projets comme l’UEFI vers le Rust ? Doivent-elles plutôt envisager de passer au Rust pour leurs futurs projets ?

Voir aussi :

Programmation : une étude révèle les langages les plus voraces en énergie, Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts

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

Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation

Facebook rejoint AWS, Huawei, Google, Microsoft et Mozilla dans la Fondation Rust, et renforce son équipe Rust par des nouveaux talents
Vous avez lu gratuitement 2 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 11/02/2025 à 19:48
N'y aurait-il pas Ada en 1983 qui était fort novateur à l'époque
Ada n'a pas percé. Peu de gens doivent le connaitre ici.

Mais il n'y a pas forcément de lien entre la popularité de quelque chose et sa valeur pertinente.

L'avenir dira ce qu'il en est pour Rust.
7  0 
Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 08/02/2025 à 20:03
pourquoi ne pas envisager de développer un nouveau Linux entièrement avec Rust ?
Parce qu'il y a plus de 27,8 millions de lignes de code à refaire (chiffre de 2020).
Et on ne parle que du noyau.
6  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 20/02/2025 à 10:59
Citation Envoyé par d_d_v Voir le message
J'avais écrit sur un autre fil que seuls les incompétents ou très très débutants écrivaient du c++ avec une écriture non "sécurisée" (pas de conteneurs STL, pas de shared pointeurs), et on m'a répondu qu'on ne pouvait pas faire confiance dans le développeur.
Ce qui fait toute la différence entre Rust et C++ au niveau de la sécurisation, c'est qu'elle est opt-in en C++ alors qu'elle est opt-out en Rust.

Même si l'on considérait que la STL et les smart pointers sont memory safe (ce qui n'est pas le cas), il faudrait toujours s'assurer de bien les employer, tout le temps. En C++, quand on sort des clous par erreur, le plus souvent, rien ne nous l'indique. Il ne s'agit pas que d'un problème de débutant, même un développeur expérimenté finit par faire des erreurs, car il n'y a pas de démarcation précise entre ce qui est sûr et ce qui ne l'est pas.

En Rust, par défaut, tout est sécurisé d'un point de vue mémoire. il est peu probable d'écrire unsafe { x.get_unchecked(i) } en toute lettre, sans que l'auteur ne se rendre compte qu'il est en train de faire quelque chose de potentiellement dangereux, et que le relecteur n’identifie immédiatement le risque. Si on travaille avec des gens auquel on ne fait pas assez confiance (qui n'ont probablement pas besoin de code unsafe), il y a moyen de verrouiller son usage dans le projet, ou forcer à documenter chaque utilisation pour expliquer ce qui permet de vérifier que l'utilisation est correcte.
6  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 22/02/2025 à 6:18
Citation Envoyé par djm44 Voir le message
Il me semble qu'il est possible d'écrire un code exact en C ou dans un autre langage.
En théorie, avec des développeur parfait, oui. Mais dans la pratique, même les meilleurs développeurs font des erreurs. L'historique de Linux parle de lui-même : 1020 CVE pour des erreurs de corruption mémoire ont dû être corrigées l'année dernière. Utiliser un langage qui empêche par défaut certains types d'erreurs dont la corruption mémoire est un gros avantage.

Citation Envoyé par djm44 Voir le message
Beaucoup de publicités sont faites sur ce langage Rust auquel je n'adhère pas. Il y a déjà une profusion de langages qui nuit à la simplicité des approches . Chez Mozilla c'est Rust, chez Google c'est Go, chez Apple c'est Swift. Sur le web c'est Java, JavaScript, PHP.
Le terme publicité est très mal adapté. Rust a ses défenseurs qui apprécient ses qualités, mais il n'est pas la propriété d'une société qui aurait besoin qu'il soit largement adopté pour l'écosystème qu'elle distribue comme Apple avec Swift, ou Microsoft avec C#.
Mozilla à participé aux débuts du langage, mais il n'en a jamais particulièrement fait la promotion. Rust était déjà un projet indépendant de la fondation Mozilla lors de sa sortie officielle, il y a dix ans. Ca fait un moment que la contribution de Mozilla à Rust est anecdotique.

Citation Envoyé par djm44 Voir le message
Et finalement le mieux c'est encore le C ou mieux encore le C++ à mon avis vu le nombre de codes existants . Linus Torvalds devrait passer au C++ mais il a une aversion pour ce langage ce qui le pousse vers Rust.
Ce qui fait que le Rust a été choisi là ou d'autres ont été écarté, c'est parce qu'il apportait des garanties de sécurités(contrairement au C++), sans sacrifier les performances et le contrôle du bas niveau (contrairement à la plupart des langages sûrs).
7  1 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 07/02/2025 à 22:29
Citation Envoyé par DNABSY Voir le message
Avec tout ce ramdam autour de C et de Rust, pourquoi ne pas envisager de développer un nouveau Linux entièrement avec Rust ?
Linux c'est des milliers de contributions depuis plus de 30 ans et des drivers pour énormément de matériel différents. C'est pas envisageable de refaire tout en Rust sans perdre beaucoup au passage. Même Microsoft alors qu'il a passé des années à travailler sur Singularity, n'a au final pas pris le risque de remplacer son noyau NT.
Il y a bien des projets de noyaux en Rust, mais ils n'ont clairement pas l'ambition de refaire tout ce que fait Linux. Il faudrait des années et des moyens colossaux.

Citation Envoyé par DNABSY Voir le message
Tout le code Linux serait entièrement migré en Rust (il y a du boulot) et plus d'embrouille avec les mainteneurs en C car plus de contacts avec eux.
Et on aurait deux noyaux concurrents avec possiblement des problèmes de compatibilité entre eux. Le but du projet est de permettre d'intégrer Rust progressivement sans fragmenter Linux

Citation Envoyé par DNABSY Voir le message
Aujourd'hui, ce ramdam risque de ne pas attirer ceux qui font du Rust et qui souhaiteraient malgré tout participer au développement de Linux
=> Nouveau projet en partant du début => Nouvelle motivation => Nouveaux mainteneurs
Décourager les gens du projet Rust for Linux semble clairement l'objectif de certains mainteneurs Linux.
Malheureusement repartir de zero n'est pas une alternative si on on veut un OS grand public comparable à Linux : performant et qui supporte tout le matériel générique.

Citation Envoyé par Mingolito Voir le message
Linux est encore en vie uniquement grâce à une petite poignée de vieux grabataires pré retraités de plus de 50 ans qui codent en C avec un truc qui s'appelle un clavier.
La nouvelle génération Z qui sait pas coder et qui a obtenu son certificat de codage dans une pochette surprise en faisant ses devoirs grâce à ChatGP ne risque pas de pondre un truc utile comme Linux, même en Rust, même en Basic ils n'en seraient pas capables.[...]
Quel superbe ramassis de clichés.
Tous les gens capables de travailler sur le code de Linux ne sont heureusement pas de vieux grabataires, tout comme les codeurs en Rust ne sont pas des jeunot incapables de coder sans IA.
C'est evident que les jeunes qui viennent d'avoir leur diplôme ne sont pas aussi efficace que des développeurs confirmé, mais ça n'a rien de nouveau. Les formation des écoles ne sont par parfaitement en adéquation avec ce qui sera utile dans 100% des cas qui se présenteront au travail, là encore, rien de nouveau, ça à toujours été le cas.

Citation Envoyé par Mingolito Voir le message
Une fois que tous les anciens seront à la retraite, je pense que le monde va mourir
On disait déjà ça en Grèce 4 siècles avant JC, je vous rassure, le monde est toujours là.
5  0 
Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 08/02/2025 à 21:04
oui mais donc en ne supportant plus ce matériel toujours supporté, et donc faire une régression.

Mais même divisé par 2 ou 3, A quoi bon recoder 9 millions de lignes ?
Rajouter du nouveau code en Rust, éventuellement, mais pas refaire la roue.
6  1 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 16/02/2025 à 1:07
Citation Envoyé par d_d_v Voir le message
pourquoi ne pas inventer des extensions aux langages existants pour expliciter l'utilisation obligatoire d'un code securisé
Dans le cas du C++, c'est techniquement possible, mais le comité C++ a refusé.
Le 11 septembre 2024, Sean Baxter avait proposé Safe C++.
Le 15 octobre 2024, pour contrer Sean Baxter, Herb Sutter a proposé d'ajouter des principes qui empêchent C++ d'avoir un sous-ensemble à la fois performant et sécurisé : P3466R0 "(Re)affirm design principles for future C++ evolution".
Le 24 octobre 2024, Sean Baxter a argumenté contre ces nouveaux principes ainsi que contre la proposition des "Safety Profiles" de Bjarne Stroustrup : Why Safety Profiles Failed.
En novembre 2024, le comité C++ a voté pour ces nouveaux principes à 29 voix pour, 22 neutres et 2 contre : Trip report: November 2024 ISO C++ standards meeting (Wrocław, Poland).
Le destin du C++ a été scellé.
5  0 
Avatar de Mingolito
Expert éminent https://www.developpez.com
Le 07/02/2025 à 16:19
Citation Envoyé par DNABSY Voir le message
Avec tout ce ramdam autour de C et de Rust, pourquoi ne pas envisager de développer un nouveau Linux entièrement avec Rust ?
Tu as oublié de voir la série en totalité, à partir du début depuis l'épisode 1 saison 1.

Linux est encore en vie uniquement grâce à une petite poignée de vieux grabataires pré retraités de plus de 50 ans qui codent en C avec un truc qui s'appelle un clavier.
La nouvelle génération Z qui sait pas coder et qui a obtenu son certificat de codage dans une pochette surprise en faisant ses devoirs grâce à ChatGP ne risque pas de pondre un truc utile comme Linux, même en Rust, même en Basic ils n'en seraient pas capables.
Les entreprises ne veulent plus recruter de juniors car elle savent très bien qu'ils ne valent absolument rien, et encore quand ils se pointent au travail. 37 % des employeurs préfèrent embaucher une IA plutôt qu'un jeune diplômé de la génération Z, les employeurs déplorent le manque de motivation et d'initiative des jeunes diplômés de la génération Z, et des rapports indiquent que les juniors en informatique n'ont pas les compétences techniques requises.

De toute façon la génération Z le codage ça les intéresse pas, ils se disent "super bon en codage et en informatique", des vrais "hackers" parce qu'ils jouent 10 heures par jours à Counter strike.
Voila l'avenir de l'humanité et ceux qui sont censés payer notre retraite : 57 % des membres de la génération Z veulent devenir des influenceurs

Une fois que tous les anciens seront à la retraite, je pense que le monde va mourir

6  2 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 07/02/2025 à 17:31
Citation Envoyé par DNABSY Voir le message
pourquoi ne pas envisager de développer un nouveau Linux entièrement avec Rust ?
Il existe différents projets d'OS.
https://www.redox-os.org/
https://docs.tockos.org/kernel/

Des projets universitaires aussi:
https://github.com/hermit-os
https://github.com/theseus-os/Theseus
4  0 
Avatar de Christophe
Responsable Systèmes https://www.developpez.com
Le 09/02/2025 à 9:12
Une régression à quel niveau exactement ?
Régression au sens perte de fonctionnalité, enfin ici plus précisément perte d'accès aux mises à jours (correctives et de fonctionnalités) pour les architectures supprimées. Pourquoi ces archis ne sont pas actuellement supprimées ? c'est qu'il y a un intérêt de les garder. Après je ne dis pas qu'il n'y a pas de ménage à faire. Mais ça ne change pas la problématique de tout recoder.

Si on parle de problème d'avoir une communauté de développeurs, on va parler ici d'une ressource limitée, soit on leur fait évoluer le code existant (avec ou sans Rust le prob. n'est pas là), soit on leur fait tout refaire en Rust. A ton avis qu'est ce qui est le plus pragmatique.

Je n'ai rien contre Rust, ni contre les changements, mais c'est pas pour rien que les institutions financières utilisent encore COBOL, un langage obsolète que quasiment personne ici ne doit connaitre ? Tout simplement car refaire tout ça représente des millions d'heures de travail et un risque car ces vieux produits fonctionnent très bien. Bien sûr ça m'étonnerais qu'ils commencent des nouveaux projets en COBOL. c'est un cas intéressant qui montre aussi un problème de stratégie à long terme.

Pour le cas de Linux, on va se retrouver à devoir maintenir du code en assembleur, C, et Rust, avec des ressources hommes limitées. C'est un type de développement qui requiert des développeurs expérimentés. Rust reste jeune, Rust 1.0 date de 2015.
4  0