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 !

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

Le , par Patrick Ruiz

6PARTAGES

20  0 
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

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

Avatar de Ti-Slackeux
Membre expérimenté https://www.developpez.com
Le 02/04/2024 à 11:35
je me suis arrêté là :
Faut-il opérer le retrait de termes comme master ou slave au motif de ce qu’ils véhiculent des stéréotypes raciaux ?
"Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue."
Albert Einstein
18  2 
Avatar de OrthodoxWindows
Membre émérite https://www.developpez.com
Le 02/04/2024 à 12:03
Citation Envoyé par Ti-Slackeux Voir le message
je me suis arrêté là :

"Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue."
Albert Einstein
Je suis d'accord, ce débat est vraiment con. Mais bon, visiblement certains n'ont pas mieux à faire que perdre du temps au lien de réaliser des vrais corrections dans le code.
Cependant, ce genre de polémique stérile est souvent soutenu pas des grosses entreprises ; peut-être faut-il y voir un intérêt pour détourner l'attention de leur méfaits.
Parfois c'est plus direct, c'est le logiciel libre qui est visé (je pense à la polémique sur Stallman).

C'est comme ceux qui sont contre l'utilisation des termes "liste noir/blanche". Alors que culturellement, associer le noir au "mal" ou a la mort n'a rien de raciste, c'est quelque chose de très ancien qui vient du fait que sans lumière, on ne voit rien (on risque donc sa vie). Je ne serai pas surpris que certains peuples en Afrique fassent la même association.
Comparer ça au racisme c'est à peu près la même logique que de dire qu'utiliser la couleur orange pour indiquer un chantier revient à traiter tous les roux de travailleur du BTP
Surtout qu'en plus, aucun homme n'est vraiment "noir" sur Terre, en réalité, il n'y a que des nuances de brun...
11  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 17/09/2022 à 13:13
Citation Envoyé par chrtophe Voir le message

Si ces mauvais usages peuvent être "empêchés avec Rust pourquoi pas, mais pour participer au développent il faudra connaitre et le C et Rust.
Pas vraiment, le cœur du noyau reste en C, il n'est pas prévu que ça change. On pourra toujours le développer sans connaitre Rust. Le Rust gagne juste une API officielle pour permettre de faire des modules séparés (en gros les drivers).

Citation Envoyé par disedorgue Voir le message
Avons nous besoin du C pour compiler le compilateur Rust et celui-ci utilise-t-il toujours la lib C ?
Rust n'a pas besoin de la lib C en mode nostd (sans accès aux fonctionnalité de l'OS) qui est justement ce que l'on utilise quand on développe pour un noyau. Il en a juste besoin de la libc en mode standard car c'est la seule API stable pour accéder aux fonctionnalités de la grande majorité OS modernes.
Par contre le backend habituel de Rust repose sur LLVM qui est écrit en C++ pour bénéficier de ces grosses capacités d'optimisation. Il existe un backend alternatif en Rust mais il vise surtout la compilation rapide de code peu optimisé.
10  0 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 02/04/2024 à 20:03
Comme si ne plus utiliser les termes maitres/esclaves allait faire disparaitre l'esclavage ou rendre justice aux victimes présentes, passés, ou futurs.

On peut aller très loin dans la connerie :

Nous tous (ou quasiment) travaillant dans l'informatique sommes des prestataires de services.
service désigne l'action de servir, càd être au service, à la disposition de quelqu'un. Du coup faut-il remettre ce terme en question dans ce contexte, surtout que service vient du latin servitium signifiant état d’esclave, cervitude).
10  1 
Avatar de Aspartame
Membre confirmé https://www.developpez.com
Le 02/04/2024 à 13:08
Bonjour

étudiant en master, je m'inquiète sérieusement sur mon diplôme.
12  4 
Avatar de fdecode
Membre régulier https://www.developpez.com
Le 29/06/2022 à 15:45
Citation Envoyé par defZero Voir le message
Le C permet en effet de se "tirer une balle dans le pied", mais c'est justement ce comportement qui lui permet de gérer du matos ne respectant pas toujours les "normes" comme il le devrait (ex: l'arithmétique des pointeurs, absolument unsafe, mais quasi obligatoire pour taper dans certains registres ou zones mémoires non couver par les APIs public des microcodes).
Pensez aussi que le matos et leurs microcodes contiennent pas mal de bug et de souplesses dans leurs implémentations des specs en général.
Les références et références mutables de rust sont des pointeurs (des pointeurs bas-niveau, pas des pointeurs "intelligents" dont l'usage est controlé par la sémantique du langage.
Mais en Rust il est tout à fait possible de travailler sur les pointeurs de manière non-contrôlée, tout simplement en utilisant le mode unsafe { ... }.
C'est découragé, c'est vrai, mais vous pouvez même faire de l'arithmétique de pointeurs en vue d'un adressage non contrôlé de la mémoire.
Même la sacrosainte interdiction de dupliquer les références mutables peut être contournée, comme le montre l'exemple suivant:

https://play.rust-lang.org/?version=...db6b8494ff95b5

Dans ce code, la charge de calcul se limite à 3 lignes (copie du pointeur, multiplication et addition sur la donnée pointée), le reste est pour ainsi dire du casting de type.

On peut donc travailler en unsafe, mais la philosophie globale est de limiter cet usage à des situations nécessaires.

Citation Envoyé par defZero Voir le message
LE truc que je trouve ballot, c'est que le Rust est plutôt un remplaçant pour du Modern C++ que pour du C.
La structure de donnée est très simple: des types 'struct', des types 'union' (unsafe) et les types 'enum' qui sont des sortes d'unions labélisées (donc safe).
Rien de plus, puisque dans rust, la hiérarchie "objet" ne concerne pas les structures de donnée.
En ce sens, rust est très proche du C. Plus proche du C que du C++, je dirais.

En revanche, la hiérarchie "objet", et plus généralement les qualités multi-paradigme du langage, se construisent au travers des traits, qui n'accèdent pas directement aux données.
Le système de trait de rust est vraiment très puissant...
L'approche objet de Rust, qui dissocie les méthodes des structures, est un peu atypique pour un langage objet. Mais ça fonctionne très bien.

Bref, pour simplifier, le langage rust c'est comme du C avec en plus une union labélisée, une sémantique de contrôle (débrayable) des pointeurs, un système de trait, qui est essentiellement indépendant de la structure de donnée, et la possibilité de paramètres de types pour faire de la programmation générique.
Je le vois bien plus comme une évolution du C que du C++.
7  0 
Avatar de yannoo95170
Membre régulier https://www.developpez.com
Le 17/10/2022 à 23:49
« Oui, la fenêtre de fusion est de deux semaines, mais c'est surtout pour me laisser le temps d'examiner les choses, pas pour "deux semaines pour mettre en place à la hâte une branche que vous enverrez à Linus le vendredi de la deuxième semaine". L'idée de "faire une nuit blanche pour rendre le papier la veille de la réunion" est quelque chose qui aurait dû disparaître après le lycée. Pas pour le développement de noyaux. La règle est que les choses qui me sont envoyées doivent être prêtes *avant* l'ouverture de la fenêtre de fusion, pas pendant la fenêtre de fusions » a déclaré dimanche Torvalds dans son message.

Pourquoi ne pas mettre en place une fenêtre d'une ou 2 semaines de propositions/analyses de branches **AVANT** l'ouverture de la fenêtre de fusion ?
7  0 
Avatar de petitours
Membre chevronné https://www.developpez.com
Le 02/04/2024 à 17:02
Citation Envoyé par shunesburg69 Voir le message
L'esclavage s'est terminé en France en 1848 et aux USA en 1865, je vois personne de vivant concerné par cette histoire d'esclavage. Pour info, la plupart du temps c'est des militants (noir ou blanc) qui non jamais eux de famille dans l'esclavage et qui oublient que des blancs comme moi ont des ancêtres esclaves et qui s'en foutent de ses débats stériles. Ils feraient mieux de s’inquiéter de la discrimination positive (et autre racisme anti-blanc) qui font du racisme en passant faire l'inverse.
Inde, Chine (les Ouïghours ), Pakistan, et bien d'autres pays. L'esclavage existe bien encore aujourd'hui. Mais une fois de plus le problème est l'esclavage, pas le mot qui le désigne très bien et ça n'a rien à faire dans les discussions sur l'intégration de Rust dans Linux.
6  0 
Avatar de defZero
Membre extrêmement actif https://www.developpez.com
Le 22/06/2022 à 23:56
LE truc que je trouve ballot, c'est que le Rust est plutôt un remplaçant pour du Modern C++ que pour du C.

Le C permet en effet de se "tirer une balle dans le pied", mais c'est justement ce comportement qui lui permet de gérer du matos ne respectant pas toujours les "normes" comme il le devrait (ex: l'arithmétique des pointeurs, absolument unsafe, mais quasi obligatoire pour taper dans certains registres ou zones mémoires non couver par les APIs public des microcodes).
Pensez aussi que le matos et leurs microcodes contiennent pas mal de bug et de souplesses dans leurs implémentations des specs en général.

Pour moi, des langages comme Zig ou Odin sont plus intéressant comme remplaçant du C legacie que Rust, même s'ils demandent encore du travail ils prennent la bonne voie.

Enfin, dans tous les endroits ou Rust peut être utilisé, autant qu'il le soit plutôt que du "C with Object" avec plein de code Boilerplate (même avec des Macro ).
7  2 
Avatar de sergio_is_back
Expert confirmé https://www.developpez.com
Le 23/06/2022 à 9:10
Citation Envoyé par Patrick Ruiz Voir le message
Le problème avec le C n’est-il pas plutôt le mauvais usage que certains développeurs en font ?
Ça c'est valable pour tous les langages !
Quelque soit le niveau d'abstraction proposé... Mauvais usage ne veut pas dire mauvais langage
5  0