Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

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

    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 2020 pourrait être l’année du langage Rust au sein du noyau Linux.

    En effet, au troisième trimestre de l’année précédente, on parlait déjà de la possible entrée au sein du noyau Linux d’un framework pour la mise sur pied de pilotes en langage de programmation Rust. En 2020, la communauté Linux est désormais lancée sur des réflexions en lien à la façon d’intégrer la prise en charge du langage de Mozilla Research au système de build. « Nous devons adopter une approche de prise en charge identique à celle des compilateurs et procéder à la vérification de la disponibilité de divers drapeau de compilation à l’étape de configuration », a précisé Linus. La sortie du créateur du célèbre noyau open source marque en principe son accord avec le principe de la prise en charge de plus en plus importante du langage Rust au sein de Linux. Sur la base de ce seul élément, 2020 pourrait déjà bien être considéré comme l’année du langage Rust au sein du noyau Linux. En effet, ce dernier a, semble-t-il, réussi à convaincre Linus Torvalds là où C++ a échoué.


    Le fait avec le langage Rust considéré par des acteurs de la filière comme le futur de la programmation système en lieu et place du langage C est qu’il a obtenu la reconnaissance de « plus aimé » des développeurs habitués de la plateforme de questions-réponses sur des sujets liés à l’informatique – StackOverflow. Au terme de l’édition 2019 de son enquête qui a mobilisé près de 90 000 travailleurs de la filière programmation informatique, le langage a concentré 83,5 % de retours positifs. Ce sont donc près de 75 000 développeurs de ce sondage Stack Overflow qui ont fait savoir qu’ils utilisent le langage Rust et qu’ils vont continuer à en faire usage ; autrement dit, des développeurs qui, après quelques expériences avec le langage, en sont tombés amoureux. C’est une autre enquête cette fois menée par l’équipe de développement du langage et parue au premier trimestre de l’année en cours qui est venue mettre en lumière le fait que le langage reste encore principalement utilisé pour des projets personnels. Raison majeure : manque d’adoption par les entreprises.

    Après, la donne est en train de changer puisque le langage commence à bénéficier de soutiens d’acteurs de l’industrie informatique et pas des moindres. À date, il existe une projection du langage Rust pour les API Windows Runtime. C’est une annonce de Microsoft parue au mois de mai dernier. Rust rejoint ainsi C++ avec la bibliothèque Rust/WinRT, ce qui ouvre la possibilité aux développeurs Rust les portes de la mise sur pied de composants et pilotes pour Windows.

    C’est un grief qui revient à l’encontre du langage C : les 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. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon. C’est un défi à relever pour le futur en matière de programmation système et d’après Microsoft, Rust est la meilleure chance de l’industrie informatique pour la mise sur pied d’applications système sécurisées. Ce sont très certainement des développements que la communauté Linux prend en compte au moment de la prise en charge sans cesse revue à la hausse de la prise en charge du langage Rust au sein du noyau Linux. Lorsque l’actuelle équipe de mainteneurs faite de quinquagénaires sera considérée comme les programmeurs COBOL des années 2030, celle des trentenaires sera aux affaires occupée à manipuler un langage sur lequel les experts s’accordent sur ceci qu’il offre de meilleurs gages de sécurité.

    Source : lkml

    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 ?

    Voir aussi :

    Rust s'approche de sa première version stable, Mozilla publie une nouvelle préversion de son langage dérivé de C/C++
    Linux : un framework pour la mise au point de drivers en langage Rust pourrait faire son entrée dans le noyau de l'OS
    L'équipe de npm choisit Rust pour gérer les goulots d'étranglement liés au CPU au détriment de Go, C, C++ et Java, voici les raisons de ce choix
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre actif
    J'ai 17 ans et j'ai toujours voulu contribuer à Linux. C'est vrai que dans **mon** entourage de jeunes une grosse vague de Rust est en train de s'élever et de balayer tous les autres languages. Il n'est à ce jour pas possible d'estimer l'ampleur du changement qui s'annonce. J'ai beaucoup de connaissances dans ce language et j'ai envie de contribuer à Linux. Je vois bien que si Linus fait bouger les choses c'est pour les gens comme moi (mais pas que, évidemment), et j'en suis extrêmement heureux et enthousiaste.

  3. #3
    Expert éminent sénior
    Il y a quand même des choses qui me choquent quand je lis du code écrit en Rust, comme le manque de parenthèses pour les if. Hérésie !


    Après pourquoi pas, mais ça fait encore un n-ième langage à apprendre, tout le monde allant de son propre "successeur du C++"... Le problème est qu'on ne peut pas être un expert dans tous les langages.
    "Parce que le diable est dans les détails, une vision sans nuance ne peut prétendre à la compréhension du monde."

    Mon ancienne page perso : https://neckara.developpez.com/

  4. #4
    Expert éminent sénior
    Citation Envoyé par Neckara Voir le message
    Il y a quand même des choses qui me choquent quand je lis du code écrit en Rust, comme le manque de parenthèses pour les if. Hérésie !
    Si c'est ce qui te choques le plus quand tu lis du Rust, je dirais que ça va. Il y a quand même deux trois truc comme les lifetimes explicites qui ont de quoi faire arracher quelques cheveux à ceux qui découvrent le langage.

    Citation Envoyé par Neckara Voir le message
    Après pourquoi pas, mais ça fait encore un n-ième langage à apprendre, tout le monde allant de son propre "successeur du C++"... Le problème est qu'on ne peut pas être un expert dans tous les langages.
    C'est vrai que d'apprendre un langage supplémentaire peut être un obstacle. Le Rust a quand même un gros avantage quand tu ne le maitrises pas bien, c'est que quand tu fais une erreur d'utilisation, il va le plus souvent juste refuser juste de compiler.
    C'est quand même plus sécurisant que des langages comme le C++ qui peuvent facilement introduire des erreurs pernicieuses s'ils sont mal employés.

  5. #5
    Modérateur

    C'est intéressant de voir que des entreprises comme Microsoft ou Linus Torvald (qui ne jure que pas le C ) s'intéressent à Rust. Je comprends la philosophie derrière ce langage qui essaye de faire mieux que le C++ (malgré les nouvelles normes intégrant le concept de smart pointers), par contre je trouve que l'implémentation du concept de lifetime complexifie la lecture du code.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  6. #6
    Membre éclairé
    Citation Envoyé par Gugelhupf Voir le message
    C'est intéressant de voir que des entreprises comme Microsoft ou Linus Torvald (qui ne jure que pas le C ) s'intéressent à Rust. Je comprends la philosophie derrière ce langage qui essaye de faire mieux que le C++ (malgré les nouvelles normes intégrant le concept de smart pointers), par contre je trouve que l'implémentation du concept de lifetime complexifie la lecture du code.
    Si ça vous intéresse regardez le projet Verona de Microsoft sur github c'est un playground autour de Rust pour résoudre des problématiques lié à la programmation système avec. Verona ne sera jamais utilisé comme tel mais ce qui est testé va en partie finir dans Rust pour certains points bien précis

  7. #7
    Expert éminent sénior
    Citation Envoyé par Uther Voir le message
    C'est vrai que d'apprendre un langage supplémentaire peut être un obstacle. Le Rust quand même un gros avantage quand tu ne le maitrises pas bien, c'est que quand tu fais une erreur d'utilisation, il va le plus souvent juste refuser juste de compiler.
    C'est quand même plus sécurisant que des langages comme le C++ qui peuvent facilement introduire des erreurs pernicieuses s'ils sont mal employés.
    Oui, mais le problème, c'est qu'il y a 2-3 ans, on nous disait de faire du Go, il y a 5-6 ans fallait faire du D. Et dans 2-3 ans on nous dira d'utiliser un autre langage.


    Quand tu choisis un langage pour un projet, c'est une décision qui t'engage sur des décennies, tu ne peux pas le réécrire complètement dans un autre langage tous les 2-3 ans.
    "Parce que le diable est dans les détails, une vision sans nuance ne peut prétendre à la compréhension du monde."

    Mon ancienne page perso : https://neckara.developpez.com/

  8. #8
    Expert confirmé
    Citation Envoyé par Uther Voir le message
    C'est quand même plus sécurisant que des langages comme le C++ qui peuvent facilement introduire des erreurs pernicieuses s'ils sont mal employés.
    C'est quoi "le C++" ? C++98, C++11, C++20 ? Le C++ d'aujourd'hui a également beaucoup de fonctionnalités "sécurisantes". Rust est certes très efficace à ce niveau mais il faut comparer ce qui est comparable.

    Citation Envoyé par Gugelhupf Voir le message
    Je comprends la philosophie derrière ce langage qui essaye de faire mieux que le C++ (malgré les nouvelles normes intégrant le concept de smart pointers)
    Encore une fois, ce n'est pas nouveau : les smart pointers de C++ existent depuis C++11, soit 9 ans. Aujourd'hui, la norme par défaut des compilateurs, c'est C++14 voire C++17.

  9. #9
    Membre éprouvé
    Citation Envoyé par Neckara Voir le message
    Oui, mais le problème, c'est qu'il y a 2-3 ans, on nous disait de faire du Go, il y a 5-6 ans fallait faire du D. Et dans 2-3 ans on nous dira d'utiliser un autre langage.
    Quand tu choisis un langage pour un projet, c'est une décision qui t'engage sur des décennies, tu ne peux pas le réécrire complètement dans un autre langage tous les 2-3 ans.
    D et Go n'ont jamais été que des recommandations de curiosité. Je ne vois pas (plus) Rust dans une position comparable.

  10. #10
    Expert éminent sénior
    Citation Envoyé par frfancha Voir le message
    D et Go n'ont jamais été que des recommandations de curiosité. Je ne vois pas (plus) Rust dans une position comparable.
    Bon après t'as aussi les problèmes de langages choisis par une plateforme : Java/C#/Objective C.
    T'as des langages utilisés dans des domaines particuliers Python/R (pour les calculs/learning).

    Encore que des langages soient incontournables, c'est normal :
    • HTML/CSS3
    • LaTeX (écriture de documents)
    • ASM (très bas niveau)


    Mais pour le reste on a tellement de langages différents, dont certains un peu pourris qui se sont imposés (coucou JS), d'autres devenus obsolètes (coucou PHP). À quand un unique langage pour les gouverner tous, pour les trouver, pour les amener tous, et dans les ténèbres les lier ?
    "Parce que le diable est dans les détails, une vision sans nuance ne peut prétendre à la compréhension du monde."

    Mon ancienne page perso : https://neckara.developpez.com/

  11. #11
    Expert confirmé
    Citation Envoyé par Neckara Voir le message
    À quand un unique langage pour les gouverner tous, pour les trouver, pour les amener tous, et dans les ténèbres les lier ?
    Après la programmation par contrat, la programmation communiste.

  12. #12
    Expert éminent sénior
    Citation Envoyé par Neckara Voir le message
    Oui, mais le problème, c'est qu'il y a 2-3 ans, on nous disait de faire du Go, il y a 5-6 ans fallait faire du D. Et dans 2-3 ans on nous dira d'utiliser un autre langage.
    Quand tu choisis un langage pour un projet, c'est une décision qui t'engage sur des décennies, tu ne peux pas le réécrire complètement dans un autre langage tous les 2-3 ans.
    Si tu choisis tes langages en fonction des trending topics des réseaux sociaux peut-être. Je crois pas que grand monde qui fasse de la vraie programmation système ait sérieusement envisagé Go ou D. Si on prend la peine de se renseigner un minimum sur ces langages, on voit vite qu'ils sont quasi inutilisable sans GC.

    Et quitte à ressembler à un disque rayé, on ne demande pas de réécrire l'intégralité du code existant en Rust. Le but est justement de permettre au code Rust de s’intégrer naturellement au code C existant dans le noyau. Ça devrait être utile avant tout pour faire des modules séparés, pas pour refondre le noyau en entier.

    Citation Envoyé par SimonDecoline Voir le message
    C'est quoi "le C++" ? C++98, C++11, C++20 ? Le C++ d'aujourd'hui a également beaucoup de fonctionnalités "sécurisantes". Rust est certes très efficace à ce niveau mais il faut comparer ce qui est comparable.
    Les fonctionnalités "sécurisantes" de C++ sont quand même limitées. Elle ne protègent pas totalement des erreur mémoire, mais surtout, c'est une surcouche à déposer soi-même sur une base non sécurisée. Si on ne la déploie pas bien comme il faut, on peut passer à travers sans s'en rendre compte.
    Alors qu'en Rust c'est l'inverse, tout est sécurisé par défaut et si tu veux passer a travers la couche de sécurité il faut le faire explicitement.

    Citation Envoyé par SimonDecoline Voir le message
    Encore une fois, ce n'est pas nouveau : les smart pointers de C++ existent depuis C++11, soit 9 ans. Aujourd'hui, la norme par défaut des compilateurs, c'est C++14 voire C++17.
    Les smart pointers et les divers mécanismes introduits dans les versions modernes de C++, ne suffisent pas à garantir la sécurité mémoire, même si c'est mieux qu'avant. Le C++ de part son historique ne peut techniquement pas offrir le même genre de garantie que Rust sur la mémoire.

    Citation Envoyé par Neckara Voir le message
    À quand un unique langage pour les gouverner tous, pour les trouver, pour les amener tous, et dans les ténèbres les lier ?
    Probablement jamais et c'est tant mieux, les avantages de certains langage dans certains contextes sont des inconvénients dans d'autres. Il y a des choses que je ne ferais pas en Javascript, tout comme il y a des chose que je ne ferais pas en Rust (et il n'y a rien que ne ferais en PHP sauf sous la contrainte d'une arme ).

  13. #13
    Expert éminent sénior
    Citation Envoyé par Uther Voir le message
    Probablement jamais et c'est tant mieux, les avantages de certains langage dans certain contextes sont des inconvénients dans d'autres.
    Je suis d'accord, mais tu n'as pas besoin de 50 langages non plus.

    À la limite un pour prototyper/scripter, et un pour faire de la prod. Après, il y a des problèmes de bibliothèques ou de plateformes, mais c'est pas lié au langage en lui-même.


    Le reste, c'est quelques incontournables, dont j'ai oublié le shell d'ailleurs.
    "Parce que le diable est dans les détails, une vision sans nuance ne peut prétendre à la compréhension du monde."

    Mon ancienne page perso : https://neckara.developpez.com/

  14. #14
    Expert éminent sénior
    Dans un monde parfaitement carré, pourquoi pas. Sauf que pour faire ça, il faudrait que ça soit toujours facile de faire des catégories précises, et puis il faudrait que tout le monde soit d'accord sur ce qui mérite d'être gardé et ce qui passe à la trappe.

    Dans la pratique, ce n'est pas comme ça que ça marche. L'univers des langages de programmation, c'est une sorte de sélection naturelle. Sur les centaines de langages existants, seul quelques un auront droit a une adoption de masse, en général ceux qui arrivent au bon endroit au bon moment, en général avec le bon d'écosystème.

  15. #15
    Membre confirmé
    Citation Envoyé par redcurve Voir le message
    Si ça vous intéresse regardez le projet Verona de Microsoft sur github c'est un playground autour de Rust pour résoudre des problématiques lié à la programmation système avec. Verona ne sera jamais utilisé comme tel mais ce qui est testé va en partie finir dans Rust pour certains points bien précis
    Faudrait que tu te renseignes un peu sur le sujet avant de sortir un message ou les 3/4 (si ce n'est plus) est complétement faux.

    Citation Envoyé par redcurve Voir le message
    le projet Verona de Microsoft sur github c'est un playground autour de Rust
    Rust et Verona n'ont aucun lien (si ce n'est pas qu'ils essayent de résoudre les mêmes problématiques mais différemment). Ils n'utilisent pas la même stack. Verona est implémenté en C++ tandis que Rust est self-hosté. Je ne sais ou tu es aller cherché sort cette histoire de playground.

    Citation Envoyé par redcurve Voir le message
    Verona ne sera jamais utilisé comme tel mais ce qui est testé va en partie finir dans Rust pour certains points bien précis
    Non. Rust et Verona sont 2 choses distinctes faites par 2 équipes distinctes. Rien ne les empêche de s'inspirer l'un de l'autre mais vu qu'ils sont dans l'idée différent c'est peu probable que l'un contribue fortement à l'autre (et vice versa).

  16. #16
    Membre expérimenté
    Qu'est-ce que ces troll
    Aucun langage n'a eu autant l’approbation de la communauté pour remplacer C. Beaucoup ont dis qu'ils voulaient faire un remplaçant de C. Mais ils ont rarement convaincus et certainement pas pour remplacer C.

    * Go à par exemple été conçus pour remplacer C, mais très vite on s'est rendu compte qu'il ne ferait pas l'affaire. Il remporte un certains succès pour remplacer la lourdeur de Java et des problème que fais Oracle.

    * D n'a jamais convaincus que quelque barbus. Mais il n'a jamais vraiment révolutionné assez et C++ l'a rattrapé.

    Bien d'autres ont voulu allié rapidité de C et simplicité de Python mais c'est techniquement impossible. C'est un peu comme si une voiture de circuit voulait être capable de tracter un poids lourd. En théorie on peu l'imaginer, mais en l'état actuelle des connaissance s'est ne pas être réaliste. On peut surmonter des obstacles mais un par un. Le voyage vers Proxima du Centaure n'est pas pour demain, Mars est un objectif plus réaliste et encore, la Lune représente encore des défis suffisant.

    Rust apporte des idées nouvelles que l'on a pas connu depuis l'invention de la programmation Objet (enfin on en a connu mais qui n'ont pas convaincus comme la programation par Aspect). Ou plus récemment depuis LLVM mais cela ne concernait pas le langage lui même mais le compilateur.
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  17. #17
    Expert confirmé
    Citation Envoyé par abriotde Voir le message
    Bien d'autres ont voulu allié rapidité de C et simplicité de Python mais c'est techniquement impossible. C'est un peu comme si une voiture de circuit voulait être capable de tracter un poids lourd. En théorie on peu l'imaginer, mais en l'état actuelle des connaissance s'est ne pas être réaliste. On peut surmonter des obstacles mais un par un. Le voyage vers Proxima du Centaure n'est pas pour demain, Mars est un objectif plus réaliste et encore, la Lune représente encore des défis suffisant.
    Pourquoi est-ce techniquement impossible ? C'est pourtant ce que prétend faire Nim. Perso, je n'en sais rien mais il faudra plus que des métaphores de camion et de Proxima du Centaure pour me convaincre...

    Citation Envoyé par abriotde Voir le message
    Rust apporte des idées nouvelles que l'on a pas connu depuis l'invention de la programmation Objet (enfin on en a connu mais qui n'ont pas convaincus comme la programation par Aspect). Ou plus récemment depuis LLVM mais cela ne concernait pas le langage lui même mais le compilateur.
    Lesquelles ? Il me semble que Rust voulait justement de faire une synthèse de toutes les bonnes idées plutôt que d'innover (d'où le nom).

  18. #18
    Membre émérite
    Citation Envoyé par SimonDecoline Voir le message

    Encore une fois, ce n'est pas nouveau : les smart pointers de C++ existent depuis C++11, soit 9 ans. Aujourd'hui, la norme par défaut des compilateurs, c'est C++14 voire C++17.
    Heu.... non. Le concept de smart pointer date d'au moins C++98, même s'il y avait des problèmes: std::auto_ptr. Sinon, il y avait aussi quelques articles qui traînaient sur la toile, notamment chez Dr.Dobbs sur le sujet.
    Je ne dis pas que C++11 n'a pas amélioré les choses, hein, loin de la... ça a tellement changé le langage que je doute avoir été le seul à l'utiliser depuis avant 2010 (ce bon flag --std=c++0x...)

  19. #19
    Expert confirmé
    Citation Envoyé par Freem Voir le message
    Heu.... non. Le concept de smart pointer date d'au moins C++98, même s'il y avait des problèmes: std::auto_ptr. Sinon, il y avait aussi quelques articles qui traînaient sur la toile, notamment chez Dr.Dobbs sur le sujet.
    Oui merci pour la précision mais je parlais des smart pointers supportés actuellement. L'implémentation "auto_ptr" est dépréciée depuis C++11 et supprimée depuis C++17 (c'est même l'une des rares ruptures de compatibilité du langage). Quant au "concept de smart pointer", je ne suis pas historien des langages mais ça ne m'étonnerait pas que ça existait avant même le C++...

  20. #20
    Candidat au Club
    Enfin un remplaçant viable ?
    A force de trainer sur developpez.com, on en voit des langages qui prétendent remplacer le C (C2 par exemple). Rust devient un concurrent sérieux, c'est pas plus mal. Peut-être sera t'il enseigné en lieu et place de C... Mes souvenirs de bachelor sont encore douloureux la programmation parallèle avec les sémaphores et autres segments partagés en particulier.

###raw>template_hook.ano_emploi###