Rust passe à la version 0.7 avec plus de 2 000 changements
Le langage dérivé du C/C++ de Mozilla gagne en maturité et s'approche de la version stable

Le , par Hinault Romaric

6PARTAGES

2  0 
Rust, le langage de programmation de la fondation Mozilla, suit son évolution et atteindra bientôt la version stable 1.0.

Pour rappel, Rust a été développé comme une alternative aux langages C et C++. Il reprend une grande partie de la syntaxe de ceux-ci, avec un point d’honneur accordé à la sécurité par rapport à la performance. L'objectif de Mozilla est de « concevoir et implémenter un langage orienté objet statique, typé, sûr, concurrentiel et efficace ».

Rust a été développé à la base comme un projet autonome par Graydon Hoare, de la fondation Mozilla, en 2006. Le langage a été dévoilé publiquement en 2010 et est sorti en version 1.0 pour les « early adopters » en janvier 2012.

Depuis cette date, Rust a gagné en maturité et fonctionnalités, et est désormais utilisé pour le développement de Servo, le prochain moteur de rendu Web de la fondation Mozilla. Il bénéficie également du soutien de Samsung.




Avec la version 0.7, Rust devient plus stable et moins volatile. Les modifications permettant des ruptures avec la version précédente ne sont pas nombreuses. Mozilla a continué à affiner son langage en apportant plus de 2 000 modifications à celui-ci.

Parmi les modifications, on va noter la suppression du mot clé « copy » en faveur de « clone ». La transition vers l’utilisation des nouveaux types d’itérateurs continue. Le passage complet vers les nouveaux types d’itérateurs va permettre de gagner en souplesse et en nouveautés.

Le système expérimental rustpkg bénéficie de quelques améliorations, notamment l’utilisation d’une URL comme ID de package pour designer des packages locaux ou distants, la possibilité de télécharger des packages directement à partir de GitHub, le « versioning » explicite, etc. Les types numériques gagnent également en maturité.

La bibliothèque centrale a été renommée en « std » avec cette version. De nouveaux modes permettent d’identifier les variables inutilisées, les blocs dangereux et inutiles, des variables non lues, etc.

Rust 0.7 est disponible sous une licence open source MIT ou Apache 2 pour Linux, Windows, OS X et FreeBSD. Elle est principalement à destination des early adopters et ne devrait pas être utilisée en environnement de production.

Télécharger Rust 0.7

Source : Notes de version

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

Avatar de Stéphane le calme
Chroniqueur Actualités https://www.developpez.com
Le 29/09/2013 à 6:15
Rust 0.8 disponible en téléchargement,
l'alternative au C/C++ revient avec environ 2 200 changements

Rust est un langage structuré en blocs avec un accent particulier mis sur la sécurité et la performance. Visuellement, il ressemble à un langage de la famille du langage C mais diffère de manière significative dans les détails syntaxiques et la sémantique. Ceci vient certainement du fait qu'il a été développé comme alternative au C/C++.

La communauté Rust, de concert avec la fondation Mozilla, annonce l'arrivée de la version 0.8 du langage ainsi qu'une mise à jour de ses outils et de son compilateur.

La version 0.8 apporte près de 2 200 modifications au langage parmi lesquelles un changement dans la syntaxe de la boucle « for » qui introduit désormais les objets dans les itérations.

Une nouvelle macro est aussi apportée aux chaînes de caractères ; « format! » ambitionne de remplacer « fmt! » pour plusieurs raisons, notamment un gain de performance. Ce changement signifierait aussi que les macros basées sur « fmt! » migreront vers « format! » rapidement.

Le runtime de Rust précédemment écrit en C++ a été réécrit en Rust afin de faciliter un nouveau sous-système E/S qui intègre les boucles d'événements E/S qui ne feront pas planter le planificateur de tâches. Le système est temporairement situé dans « std::rt::io ».

Rust 0.8 est disponible sur Windows Linux et OS X. Cette version devrait être considérée comme une version alpha et ne devrait donc pas être utilisée en environnement de production.

Télécharger Rust 0.8

Source : Mozilla

Et vous ?

Avez-vous déjà utilisé Rust ? Qu'en pensez-vous ?
Avatar de esperanto
Membre éclairé https://www.developpez.com
Le 03/10/2013 à 10:10
Excusez-moi mais j'ai comme l'impression que dans l'esprit de certains, tout ce qui a des accolades "ressemble à du C". Soit à peu près tous les langages récents, à l'exception peut-être de Python et Ruby.
Moi ce langage me fait plus penser à Perl 6 (le nouveau, avec son typage fort), avec un usage massif des fonctionnelles (oui en plus maintenant pour être plus moderne faut dire closures...) à la Ruby. Ou au niveau de la syntaxe... d'abord un brin de Caml, et puis après tout, tiens, ça me fait penser à Go tout à coup, et justement, ça faisait un bail qu'on n'en entendait plus parler. De là à penser que les deux langages vont subir le même destin...
Un effet positif quand même : il semble que les concepteurs de langages aient enfin compris qu'entre un C/C++ qui permet de faire n'importe quoi avec les pointeurs et un langage parano à la Ada, il y a de la place pour un vrai langage compilé qui soit ni trop permissif ni pas assez. En plus il y a de la demande, comme le prouvent des projets comme GCJ (compilateur java natif): plutôt que de s'obstiner avec une machine virtuelle alors qu'on sait que 90% des utilisateurs sont sous Windows (c'est encore plus criant avec C#), plutôt que le "write once run everywhere" pourquoi ne pas promouvoir le "write once, build everywhere" comme par exemple le projet Lazarus?
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 03/10/2013 à 17:44
Je suis assez d’accord sur le fait que le Rust ne doit pas être considéré simplement comme un remplaçant du C/C++ même s'il semble tout a fait adapté pour pouvoir le faire à terme. La syntaxe a quelques points commun (accolades, opérateurs, ...) mais aussi pas mal de différences(déclarations, types de pointeurs, closures, pattern matching). Les développeur se sont légèrement inspirés de C++, Go ou Ruby. Mais si on les écoutes leurs principales références sont Erlang(pour la concurrence) et Haskell(pour le typage).

Je serais moins d'accord vis a vis de la comparaison a Go. Rust est plus orienté vers le bas niveau(gestion fine de la mémoire, GC optionnel,...)
Un langage n'a pas besoin de faire la une en permanence pour être efficace et utilisé. Go a une communauté qui ne fait pas beaucoup de bruit mais qui est plutôt active au vu de son jeune age.
La communauté autour de Rust est plus restreinte mais aussi très active ce qui est encore plus impressionnant si on considère que le langage, n'a même pas encore une syntaxe stabilisée.
Avatar de kremvax
Membre averti https://www.developpez.com
Le 26/10/2013 à 15:27
Il me semble aussi que la comparaison avec C/C++ tient plus des applications visées (orientées performances) que du langage en lui-même. Même si d'après les quelques benchs que j'ai pu voir rust est encore loin d'avoir le même niveau de perfs, ça tient sans doute en partie à la jeunesse du langage.

J'ai "essayé d'essayer" rust pour faire un mini jeu, mais c'est assez chaud pour le moment, il va falloir attendre encore un moment que le langage gagne en maturité avant de voir se développer un petit écosystème de bibliothèques... J'ai l'impression que le langage continue d'évoluer assez massivement, les documentations / tutos qu'on peut trouver ça et là sont souvent périmés, l'interfaçage avec le C++ semble être encore en cours d'élaboration donc c'est pas encore le moment de se jeter dessus à corps perdu!
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 27/10/2013 à 0:49
Le langage continue encore d'évoluer lourdement. J'avais mis sur ce sujet un lien vers un article à jour mais malheureusement, les modérateurs n’apprécient pas que l'on mette des liens vers des tutoriels venant d'autre sites que developpez.com
Si tu es intéressé par le développement de jeu, il y a une communauté active qui travaille sur rust.

L’interfaçage avec le C++ ne sera probablement jamais totalement possible car le modèle objet de C++ est assez différent de celui de Rust. Par contre l’interfaçage avec le C fonctionne bien. Si on fait un wrapper C++ utilisant des extern "C", cela fonctionne.
Avatar de Hinault Romaric
Responsable .NET https://www.developpez.com
Le 17/01/2014 à 14:39
Rust s’approche de sa première version stable
Mozilla publie une nouvelle préversion de son langage dérivé de C/C++

Avec Rust, Mozilla ambitionne de renvoyer dans les tiroirs les célèbres langages de programmation C et C++, en proposant un langage qui s’inspire de ce qui a fait leur succès, mais qui propose en plus une meilleure sécurité.

L'objectif de Mozilla est de « concevoir et implémenter un langage orienté objet statique, typé, sûr, concurrentiel et efficace ».

Rust a été développé à la base comme un projet autonome par Graydon Hoare, de la fondation Mozilla, en 2006. Le langage a été dévoilé publiquement en 2010 et est sorti en version 0.1 pour les « early adopters » en janvier 2012.




Mozilla vient de publier la version 0.9 du langage, qui marque probablement la dernière étape avant la publication de la version stable 1.0. Rust 0.9 apporte un lot d’améliorations, dont la possibilité pour les développeurs de choisir s’ils veulent construire des bibliothèques dynamiques ou statiques.

Les bibliothèques natives sont désormais des éléments de « première classe », ce qui permet de développer et distribuer une bibliothèque Rust sans que les bibliothèques natives ne soient incluses dans le package.

Les développeurs de Rust ont procédé à une révision complète de l’infrastructure d’E/S. Toutes les fonctionnalités d’E/S sont désormais disponibles au niveau de std::io, qui a été entièrement réécrit. À ce niveau, Rust s’enrichit de deux nouvelles bibliothèques : libgreen et libnative.

Des changements ont également été apportés à la façon dont les pointeurs sont traités.

Rust est disponible en open source pour Windows, Linux, Mac OS X et FreeBSD. La version 1.0 du langage sortira avant la fin de l’année.

Télécharger Rust 0.9

Source : notes de version

Et vous ?

Avez-vous testé Rust ? Allez-vous l’adopter ?
Avatar de codec_abc
Membre averti https://www.developpez.com
Le 17/01/2014 à 17:18
J' ai du mal à trouver des informations quant à la rétro-compatibilité de Rust avec le C/C++. (Je pense que pour le C c'est quasiment certain, mais pour le C++ j'ai des doutes) C'est pour moi une grosse différence, parce que le langage a beau être prometteur sur le papier, s'il ne peut pas utiliser toutes les librairies C/C++ disponibles à ce jour ca reste un sacré frein à son adoption.

EDIT: au vue du précédent message je crois bien que j'ai ma réponse.
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 19/01/2014 à 9:23
Citation Envoyé par Hinault Romaric Voir le message
Mozilla vient de publier la version 0.9 du langage, qui marque probablement la dernière étape avant la publication de la version stable 1.0.
En fait la prochaine version sera une 0.10 et il y aura probablement une 0.11 ensuite. A partir de la version 1.0 Rust devra gérer la compatibilité ascendante et il reste encore trop de changements incompatibles prévus pour les mois à venir.
L'équipe qui travaille sur Rust a annoncé quelle envisage de pouvoir sortir la version 1.0 de Rust vers fin 2014.

Citation Envoyé par Hinault Romaric Voir le message
Avez-vous testé Rust ? Allez-vous l’adopter ?
J'ai un peu joué avec, le principe me plait beaucoup, et je pense que je l'utiliserai pour des projets personnels lorsqu'il sera stable.

Pour le travail, je verrai si j'ai une bonne occasion de le pousser quand il sera stable, mais comme je travaille surtout sur des applications web et que les performances et la sécurité ne sont que rarement nos soucis principaux, j'en doute.

Citation Envoyé par codec_abc
J' ai du mal à trouver des informations quant à la rétro-compatibilité de Rust avec le C/C++. (Je pense que pour le C c'est quasiment certain, mais pour le C++ j'ai des doutes) C'est pour moi une grosse différence, parce que le langage a beau être prometteur sur le papier, s'il ne peut pas utiliser toutes les librairies C/C++ disponibles à ce jour ca reste un sacré frein à son adoption.
L’interfaçage avec du C marche déjà parfaitement bien et le langage a été prévu pour que ça soit très simple a mettre en œuvre. Il est tout de même conseillé de faire un wrapper en Rust pour gérer la sécurité, le code C étant considéré comme "unsafe".

Actuellement si on souhaite utiliser du code C++, il faut d'écrire un wrapper en C++ qui fournira à Rust une interface C (extern "C".

Le support direct et complet du C++ n'est pas vraiment possible car il y a des différences incompatibles dans la manière dont chaque langage gèrent les objets. A ma connaissance aucun langage ne le propose. Le D fournit un support limité de l’interfaçage avec C++ et les gens qui travaillent sur Rust envisagent de fournir quelque chose d'approchant à l'avenir, mais ça sera après Rust 1.0.
Avatar de _skip
Expert éminent https://www.developpez.com
Le 19/01/2014 à 9:35
Avec l'annonce récente de M# par microsoft, le D qui pourrait finalement sortir de sa grotte avec l'aide de facebook et Rust qui s'approche d'une version stable, on risque d'avoir 3 technos qui s'attaquent en même temps au même segment. Comme si tout le monde avait réalisé en même temps qu'il existait un gros vide entre le C++ et java/.Net.

Je suis globalement très enthousiaste pour Rust mais la bataille risque d'être rude.
Avatar de codec_abc
Membre averti https://www.developpez.com
Le 19/01/2014 à 12:09
Citation Envoyé par Uther
Le support direct et complet du C++ n'est pas vraiment possible et a ma connaissance aucun langage ne la propose. Le D fournit un support limité de l’interfaçage avec C++ et les gens qui travaillent sur Rust envisagent de fournir quelque chose d'approchant à l'avenir, mais ça sera après Rust 1.0.

Techniquement l’interfaçage complet et direct avec C++ n'est pas possible, cependant on peut tout a fait utiliser du code C++ à condition d'écrire un wrapper en C++ qui fournira à Rust une interface C (extern "C".
Effectivement c'est la même solution que la totalité des autres langages qui veulent s'interfacer avec du C++. Dans la pratique, vu que c'est quelque chose que je n'ai jamais fait, comment ca se passe ? J'imagine qu'il faut d'abord compiler la librairie C++ avec le compilo de son choix. Puis linker son wrapper C avec la libraire précédemment compilé. Enfin, on peut linké son exécutable (ou sa librairie) écrit en Rust avec le wrapper. Ça me semble assez lourd comme processus. En plus, je vois un problème avec les librairies en évolution. Leur API changeant régulièrement il faut réécrire le wrapper et une partie du code Rust qui y fait appel.

Citation Envoyé par _skip

Avec l'annonce récente de M# par microsoft, le D qui pourrait finalement sortir de sa grotte avec l'aide de facebook et Rust qui s'approche d'une version stable, on risque d'avoir 3 technos qui s'attaquent en même temps au même segment. Comme si tout le monde avait réalisé en même temps qu'il existait un gros vide entre le C++ et java/.Net.

Je suis globalement très enthousiaste pour Rust mais la bataille risque d'être rude.
Il me semble qu'il y ai une différence notable entre Rust, D et M#. C'est que M# doit produire du byte code tandis que D et Rust produisent du code natif. D'ailleurs on peut aussi rajouter Go à la liste des nouveaux langages ayant pour but de "remplacer" C++.
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web