Le langage Rust fête ses cinq ans

Le langage Rust fête ses cinq ans

Le langage Rust fête ses cinq ans

La version 1.0 du langage, soutenu par Mozilla, est sortie en mai 2015. Il a parcouru depuis beaucoup de chemin. Open source, il est conçu avant tout pour le développement système, avec les performances du C et des caractériques de langages de plus haut niveau, comme Java ou C#. 

Rust attire clairement l’attention depuis sa création. Mozilla l’utilise pour ses propres besoins. Dans Firefox, tous les nouveaux développement se font ainsi avec le langage. Par exemple, toute la modernisation du code intervenue depuis Quantum.

Microsoft s’y intéresse également de près. L’éditeur y a consacré une série de billets de blogs pour en expliquer les nombreux bienfaits, notant qu’avec son niveau de performances, il serait à même de convenir pour le développement de Windows, une partie des risques inhérents au C/C++ étant éliminés avec Rust.

L’éditeur notait toutefois que le facteur temps était encore une barrière, entre autres soucis potentiels relevés. Rust est en route vers la maturité, et Microsoft (qui l’utilise quand même dans d’autres projets) semble surtout attendre que le temps fasse son œuvre. La firme a d’ailleurs publié il y a trois semaines son Rust/WinRT en préversion sur GitHub.

Mozilla fait de son côté le récapitulatif des principales améliorations portées au langage depuis cinq ans, et elles sont nombreuses. Le Rust semble promis à un brillant avenir, et le père de Firefox ne se prive pas pour rappeler qu’il a été élu « langage de développement le plus apprécié » ces quatre dernières années au classement Stack Overflow

Commentaires (24)


“les attributs de langages de plus haut niveau, comme le typage fort. ”



Au mieux, ça ne veut strictement rien dire. Au pire c’est une belle connerie.


s/de prêt/de près/g


Effectivement^^



La raison pour laquelle le Rust attire autant c’est qu’il allie performances du C avec sureté et sécurité by design. Avec le Rust va falloir y aller très fort pour arriver à avoir un leak de mémoire, le compilateur vous empêchera de faire de la merde pour que tout se passe comme prévu à l’exécution, et ça, c’est vraiment cool!








tiret a écrit :



s/de prêt/de près/g





Le bouton Signaler en bas de la brève est là pour ça&nbsp;&nbsp;<img data-src=" />









brazomyna a écrit :



“les attributs de langages de plus haut niveau, comme le typage fort. ”



Au mieux, ça ne veut strictement rien dire. Au pire c’est une belle connerie.





En effet la définition d’un langage de haut niveau est pas vraiment claire. Pour certains, tout ce qui n’était pas de l’assembleur était considéré comme un langage de haut niveau, dans ce cas la ça pourrait coller, mais en effet ça ne nous apprend pas grand chose.



&nbsp;





BarbossHack a écrit :



La raison pour laquelle le Rust attire autant c’est qu’il allie performances du C avec sureté et sécurité by design. Avec le Rust va falloir y aller très fort pour arriver à avoir un leak de mémoire, le compilateur vous empêchera de faire de la merde pour que tout se passe comme prévu à l’exécution, et ça, c’est vraiment cool!





Même si il fournit des outils qui permettent de limiter les risques, Rust ne garantit pas l’absence de leaks car il ne rentrent pas dans sa définition de sécurité mémoire.

&nbsp;Il va par contre empêcher les overflow, accès à de la mémoire non initialisés, ou déjà libérée, …

&nbsp;



Il faut comprendre « attributs » littéralement, sans référence au sens qu’on lui donne dans les langages de programmation. Le choix du terme n’est du coup pas le plus heureux, mais ça a du sens (caractéristiques aurait peut-être été moins ambigü).



Mea culpa


Rust est pour l instant loin de tout remplacer. Les objets n existent pas. Il faut passer par des traits, struct qui alourdit le code et sa lisibilité.

J attend que le langage murisse en incorporant la notion d objet.


De ma petite expérience, le plus dur au début c’est d’arriver à faire quelque chose qui compile. Le temps d’acquérir les bon réflexes sur les messages d’erreur qui sont au final assez bien foutus (contrairement à ce que je pensais en les lisant la première fois) et cela va mieux après.


Vive le COBOL <img data-src=" />

====&gt;[]



Oui dur le confinement <img data-src=" /><img data-src=" />


Je ne touche même plus une ligne de cobol ces temps-ci, je fais qu’avec sort et icetool. <img data-src=" />



edith : des utilitaires de tri et d’appariement de fichiers pour ceux qui ne connaissent pas. :-)


Tu vas attendre très très longtemps à mon avis. Il n’y justement pas d’object, ou pas d’héritage pour être plus précis, parce que justement ce n’est pas la joie. Les objects sont les structs et tu les définies avec les traits que tu peux composer comme tu le souhaites. Il y a tout un chapitre sur ce sujet dans le livre officiel:https://doc.rust-lang.org/stable/book/ch17-00-oop.html


Ce language est promis a un bel avenir par le simple fait que:




  • les développeurs Web s’y intéresse beaucoup (Mozilla oblige). Autant pour le frontend, le binding entre JS et WebAssembly est plus lent que JS&lt;-&gt;JS, autant pour le backend ça fonctionne très bien. Et pour le FAAS c’est très bien parce que ca va très vite et du coup ça coute moins cher. (facturation au temps). Et le Web c’est une grosse industrie.

  • les développeurs systèmes (gros consommateurs de C/C++) adorent la sécurité et Microsoft/Intel ont prouvés que ça valait le coup. Il me semble même que quelques modules de Linux sont écris en Rust.

  • les développeurs de jeux-video&nbsp;(aussi gros consommateurs de C/C++)&nbsp;y trouvent aussi bcp d’interêts. Le C++ ce n’est pas le joie, mais avant Rust c’était le seul language avec la performance nécessaire.


Je me suis remis un peu au COBOL. C’est vrai que c’était verbeux, ce truc. Rien que pour faire un Hello World, je vous raconte pas.

<img data-src=" />

Après, j’ai jamais bien compris l’intérêt d’un langage objet, car l’héritage d’interface suffit largement à faire le bonheur d’un développeur moyen. Et Rust le permet, donc moi ça me suffit.








sebmatrix a écrit :



Rust est pour l instant loin de tout remplacer. Les objets n existent pas. Il faut passer par des traits, struct qui alourdit le code et sa lisibilité.



 J attend que le langage murisse en incorporant la notion d objet.








 Les objets ne manquent pas, le langage a été conçu pour fonctionner sans cette notion. on arrive à faire très bien en Rust, en utilisant les notions d'implémentation et de trait, tout ce qu'on fait avec les objets en C++.&nbsp;      

Le question de supporter les objets à la façon de C++, c'est posée a un moment et il a été décidé que ça n'était pas nécessaire et qu'au contraire ça apportait des contraintes inutile

&nbsp;&nbsp;



cedeber a écrit :



- les développeurs systèmes (gros consommateurs de C/C++) adorent la sécurité et Microsoft/Intel ont prouvés que ça valait le coup. Il me semble même que quelques modules de Linux sont écris en Rust.       

- les développeurs de jeux-video&nbsp;(aussi gros consommateurs de C/C++)&nbsp;y trouvent aussi bcp d'interêts. Le C++ ce n'est pas le joie, mais avant Rust c'était le seul language avec la performance nécessaire.






Il y a bien des gens qui ont fait des modules expérimentaux en Rust mais, il est clair que du code en Rust ne pourra pas entrer dans les noyau Linux lui même. Les règles pour l'intégration de code dans le noyau sont claires. Les mainteneurs ne veulent pas a avoir a supporter plusieurs langages. Seul le C est autorisé.      

&nbsp;

Pour le dev jeu video, il y a certes une communauté amateur réelle mais anecdotique comparé a l'ampleur de ce qu'on trouve dans des langages comme C#.

&nbsp;Et au niveau jeux professionnels, ça reste assez anecdotique pour le moment. Le tooling C++ est tellement omniprésent à tous niveaux que ça prendra au mieux une éternité à Rust pour percer. Ce que les décideurs voient c'est que les développeurs doivent apprendre un nouveau langage ce qui a un coût et qu'ils perdront du temps a l'interfacer avec le tooling C++ existant. D'autant plus que les points qui font la réputation de Rust comme la sécurité et la qualité du code, les gens qui font des jeux vidéo en ont encore plus rien a foutre que le reste de l'industrie de l'informatique, à tort à mon avis, mais c'est clairement le cas.

&nbsp;


ça tombe bien les objets sont la à la fois la solution à tous les problèmes en programmation et aussi la source de la plupart des problèmes aujourd’hui.



Rust pâlie au manque d’objet par une algèbre de types très poussée qui rappelle beaucoup F# (qui n’a pas de notion “d’objet” en tant que tel non plus, même si dans la réalité ils existent pour la compatibilité avec C#).



En échange de ça, tu as une visibilité incroyable sur la mutabilité de tes valeurs, il est quasiment impossible de ne pas trouver “mais qui donc a modifié cette put*n de propriété”.



Il faut bien aussi comprendre que le concept de “traits” et d’“impl” offre une bien plus grande souplesse que les “interfaces” avec qui on les compare souvent et que d’une part ils permettent d’appliquer beaucoup de patterns de la POO (avec un peu d’adaptation par ci par là) mais aussi des patterns de programmation nouveaux ou qui restent à découvrir.



Après Rust n’est pas parfait et mériterai probablement un peu de sucre syntaxique par ci par là mais pour un langage qui ne te cache rien (pas de GC, pas de runtime, la seule chose qui s’exécute c’est ce que tu as écrit) je le trouve incroyablement mature pour un langage de 5 ans seulement. Et je ne parle même pas de l’écosystème, de Cargo qui est une merveille de simplicité, de la documentation florissante …



Pour moi c’est vraiment l’espoir d’une “programmation raisonnable” dans le sens où c’est le seul langage à ce jour qui allie performance et simplicité (mais pas simplicité d’apprentissage, j’en convient, tellement il est difficile d’arrêter de raisonner en patterns objet).








jpaul a écrit :



“mais qui donc a modifié cette put*n de propriété”





Clic droit &gt; Break when value changes. <img data-src=" />



Blague à part, je me suis mis à apprendre Rust en tant que dév C++, ça m’apporte une autre vision de la programmation. Et je ne peux qu’être envieux sur certaines features qui sont bien pétées en Rust qui manque cruellement en C++ <img data-src=" />









sephirostoy a écrit :



Clic droit &gt; Break when value changes. <img data-src=" />





Ce qui fait tout l’intérêt de Rust c’est justement empecher autant que possible ce genre de soucis à la source pour éviter au maximum d’avoir a déboguer des comportement imprévus qui pourraient passer au travers car ils n’arrivent que dans certains cas particulier.









sephirostoy a écrit :



Clic droit &gt; Break when value changes. <img data-src=" />





Oui enfin, tu seras d’accord pour dire que généralement, quand t’en vient à avoir besoin de faire ça, c’est que ton code est tellement spaghetti qu’au fond de toi tu rêves de tout jeter par la fenêtre et de tout réécrire.



En plus ce genre de features c’est pour les aristocrates qui font des langages normaux. Nous les manants qui faisons du JS, on ne met pas nos données bêtement dans des variables, ça c’était en 2015, non, on les gère via des encapsulations à tout va, dans des Observables et autres stores de données gérés par des librairies externes.



Ah je ne savais pas pour le C concernant le noyau Linux. C’est dommage, bien que compréhensible. Bon ben redox OS alors ;)



Après le language n’a que 5 ans, voire moins si on considère seulement la version 2018. Je trouve juste qu’il y a du mouvement de vraiment bcp d’horizon, ce qui est plutôt cool.








Uther a écrit :



D’autant plus que les points qui font la réputation de Rust comme la sécurité et la qualité du code, les gens qui font des jeux vidéo en ont encore plus rien a foutre que le reste de l’industrie de l’informatique, à tort à mon avis, mais c’est clairement le cas.



&nbsp;









Ça reste à voir : le coût de développement serait plus élevé au démarrage (prototypage moins rapide, tout ça…) mais coût de débogage réduit.. à mon avis plus le projet est gros, plus rust devient avantageux.



J’ai commencé à lire le rust book fin de l’année dernière à mon rythme.

C’est de loin le langage que j’ai eu le plus de mal à apprendre, pas mal de retour parle d’une courbe d’apprentissage lente et je ne peux que confirmer.



Mais une fois qu’on commence à comprendre, c’est génial. J’adore l’opérateur match, très puissant. Les enum de rust sont aussi de loin les plus complets que j’ai rencontré, ils sont incroyables flexibles.

Le chainage des erreurs avec ? permet d’écrire du code de façon super efficace et tout traiter au même endroit, sans avoir de système d’exception.

Le choix de ne pas avoir mis de null mais uniquement des optionnels avec Some et None permet également d’éviter énormément d’erreur et force à traiter correctement les cas d’erreur.



Cargo, est un excellent outil, on retrouve sur un langage bas niveau la même facilité que dans les langages plus au niveau pour la gestion des dépendances : il suffit d’indiquer la dépendance dans le fichier cargo.toml et c’est partie !



Le système de propriété, d’emprunt et de durée de vie est complexe à comprendre en main, mais on comprend leur intérêt pour protéger la mémoire.



On retrouve déjà pas mal de bibliothèque pour les éléments de base.



Ah et il y a aussi le compilateur très strict, mais qui dans la plupart des cas donne un message d’erreur claire avec des exemples de résolution. Même s’il reste des cas à améliorer.



Bref, pleins de choses cool, j’en oublie encore surement. J’encourage les gens à l’essayer.



Encore quelques années pour que la maturité du langage augmente, j’espère qu’on verra des gros frameworks d’ici là, car il y a clairement le potentiel :)


La plupart de ces points (le “?”, pattern matching, “Some”) se retrouvent aussi dans les évolutions récentes d’autres languages, dans des variantes plus ou moins élaborées et efficaces (typescript, kotlin … même un peu java à son rythme), il y a une sorte de convergence générale vers plus de programmation fonctionnelle dans la dernière décennie. Sauf Go bien sûr qui repart de la préhistoire <img data-src=" />.








jotak a écrit :



Ça reste à voir : le coût de développement serait plus élevé au démarrage (prototypage moins rapide, tout ça…) mais coût de débogage réduit.. à mon avis plus le projet est gros, plus rust devient avantageux.





&nbsp;C’est bien pour ça que j’avais précisé “à tort à mon avis”, même si c’est difficile de leur reprocher d’être prudent.&nbsp; La plupart des développeurs de JV ont du mal à cerner le gain éventuel alors que les coût d’apprentissage et interfaçage avec l’existant apparait immédiatement.



&nbsp;



Fermer