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 !

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

47PARTAGES

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 Uther
Expert éminent sénior https://www.developpez.com
Le 13/04/2015 à 0:36
Citation Envoyé par BugFactory Voir le message
En revanche, il y a encore du retard niveau performances. Le dernier benchmark que j'ai lu faisait état de performances à 85% du C. Mais ça date, quelqu'un a peut-être des chiffres plus récents?
Rust n'est pas vraiment en retard sur les performance. Il est basé sur LLVM sur lequel il se repose très lourdement pour l'optimisation ce qui lui permet d'avoir de plutôt bon résultats.

Après dire directement que les performance de Rust sont de 85% celle de C ne veux rien dire, il y a plein de situation particulières très différentes qui peuvent favoriser l'un ou l'autre. Et surtout, il faut voir que sur de sur des micro-benchmarks de langages, il est très facile d'avoir de légères différences involontaires qui ont un impact significatif. Ces derniers temps, j'ai vu beaucoup de personnes annoncer qu'un langage est beaucoup plus rapide/lent que ses concurrents avec un micro-benchmark réalisé par leur soin à l'appui, mais dès que les connaisseurs des langages en défaut se penchaient sur les détails du benchmark, on trouvait rapidement l'explication et finissait avec des résultats très proches.

Il s'avère qu'au final, s'ils sont bien écrits et travaillent dans des conditions identiques, les langages a visée système, compilés en binaire, statiquement typés et sans GC (C++, D, Nim, Rust) sont tous très rapides et ont des performance à peu près similaires. Un peu après viennent les langages compilés en binaire et statiquement typés, mais sans visée système et avec un GC comme le GO. Encore après se placent généralement les langages a VM avec GC comme C# / Java. Puis les langages dynamiquement typés comme Javascript / Ruby.
Mais là encore ça n'est que appréciation globale, si on cherche des cas particuliers, on va évidement facilement trouver des cas très particuliers ou un langage va sur-performer et inversement.

Citation Envoyé par yahiko Voir le message
Je n'ai toujours pas compris pourquoi Mozilla s'embarquait dans cette galère alors qu'ils ont à mon humble avis d'autres priorités plus urgentes (comme améliorer les performances de Firefox qui commence à tirer la langue).
Ne t'inquiète pas Mozilla investit encore énormément plus de moyens plus dans l'amélioration de Firefox que dans Rust.
Rust et Servo sont juste des projets de leur partie R&D, que toute entreprise qui envisage d'avoir un avenir ne doit pas négliger.
4  0 
Avatar de DonQuiche
Expert confirmé https://www.developpez.com
Le 19/05/2015 à 13:55
Citation Envoyé par pierreact Voir le message
Je ne vois pas ce que rust ou go peuvent apporter de plus.
Si ton programme Rust compile (en deux secondes et non pas en deux minutes contrairement au C++), alors tu es sûr que ton modèle de concurrence et ta gestion de la mémoire sont correctes (*). Y compris si certains de tes stagiaires ou programmeurs juniors ont mis leurs mains dedans ! A l'heure où les gains de performances se font sur le parallélisme de masse, c'est un très gros avantage.

Ce ne sera jamais le cas avec le C++ et ses pointeurs qui prolifèrent, au mieux tu peux t'arranger pour utiliser aussi souvent que possible des constructions sûres que peu savent correctement utiliser et dont tu sortiras pourtant régulièrement et dont tu ne pourras pas détecter et inspecter les violations (je te laisse chercher et passer en revue tous les pointeurs de ton code et examiner à la main tous les graphes d'appels conduisant à des appels asynchrones).

Clamer que le C++ 11 résout les problèmes de concurrence et de productivité, et qu'il n'y a rien à attendre des nouveaux langages, c'est comme clamer que le minitel rend Internet inutile. Quand le C++ est-il devenu une religion ?!

Citation Envoyé par FlyersWeb Voir le message
L'inconvénient, je pense, sera une courbe d'apprentissage un peu plus longue que d'autres langages puisqu'il faut bien comprendre ses erreurs pour pouvoir les corriger avec une analyse statique.
En même temps si un dév comprend comment gérer la mémoire manuellement en C++, il comprend tout de suite ce que Rust attend de lui. Et s'il ne le comprenait pas, mieux vaut que Rust le lui enseigne plutôt que de le laisser semer le champ de mines en C++.
4  0 
Avatar de DonQuiche
Expert confirmé https://www.developpez.com
Le 25/05/2015 à 7:48
Citation Envoyé par Ph. Marechal Voir le message
La sécurité : je m'en charge
Tu peux me donner le nom de tes produits, afin que je les évite stp ?

La sécurité devrait être une affaire d'outils et de méthodologie, pas d'égo. L'être humain est faillible.

Quels langages modernes ? On croit rêver en lisant ça - c'est tout juste si les programmeurs C/C++ ne sont pas traités de vieux croutons - tout en leur reconnaissant quand même l'efficacité et le contrôle de bas niveau !
Le C++ va sur ses cinquante ans, ses chaînes littérales sont encodées en ASCII, il supporte des digraphes dangereux pour les jeux de caractères obsolètes qui ne contenaient pas certains symboles, son modèle de compilation est problématique et atrocement long car le modèle est prévu pour des ordinateurs avec trop peu de mémoire pour faire tenir une représentation sémantique du code en mémoire et il a encore recours à des mécanismes dont toute l'industrie a appris à se méfier durant le dernier demi-siècle (types "standards" spécifiques à chaque plateforme par exemple).

Oui, je pense qu'on peut dire que le C++ est un vieux schnoque. Mais encore nécessaire pour l'instant.

Ce qui n'est pas forcément le cas de ses utilisateurs, le C++ étant encore enseigné dans de nombreux endroits. Pourquoi en faire une affaire personnelle ?
5  1 
Avatar de white_tentacle
Membre émérite https://www.developpez.com
Le 20/05/2015 à 10:53
Citation Envoyé par DonQuiche Voir le message
C'est énorme ! Et si tes critiques ne sont pas infondées je pense que tu devrais pourtant te demander si cette insistance à saper le bénéfice évident et conséquent que j'ai décrit sur un problème très important et très difficile ne relève pas d'autre chose qu'une simple exploration intellectuelle. J'ai malheureusement constaté que les programmeurs sont extrêmement conservateurs et défendent farouchement leurs langages - bien au-delà du raisonnable.
Oula, désolé si tu as mal pris mon propos. C’est probablement lié à mon historique personnel (j’ai fait du model-checking sur systèmes asynchrones, quand on me parle de systèmes concurrents « sûrs », ma réaction primaire est « j’ai des doutes, de manière générale on ne peut rien garantir sans faire une grosse exploration bourrine de tous les états »). Et je suis assez enthousiaste vis à vis de Rust en fait. Je pense simplement qu’il ne faut pas promettre plus que ce qui est effectivement tenable (en particulier, ton premier message semblait laisser penser que le modèle de concurrence de Rust empêchait tout blocage, d’où mon étonnement).

Si ça peut te rassurer sur le bien que je pense de Rust, il se trouve que quelque soit le langage (en général c’est C++), chaque fois que je dois faire du multithread, je conçois ça comme un ensemble de tâches asynchrones communiquant par envoi de message et transfert de données. Donc typiquement le modèle choisi par Rust .
3  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 25/05/2015 à 9:52
Je ne comprends jamais les réactions négatives dès qu'on parle d'un nouveau langage, surtout quand celui-ci s'attaque à de vrais problèmes. C'est bizarrement très récurrent sur DVP, que ce soit sur des alternatives au javascript (typescript, dart), aux langages pour la jvm (ceylon, kotlin, fantom) ou au C++ et consors (Rust ou Go).

Généralement quand un langage propose plus de sécurité on a droit à un "C'est au développeur de savoir ce qu'il fait". Il serait peut être temps de stopper une fois pour toute avec cet argument de merde parce qu'aucun mécanisme n'est là pour dispenser le développeur de savoir ce qu'il fait, ce sont des aides, des outils. On peut tout ramener à soi et estimer qu'on a pas besoin de ces facilités faites pour les tocards, mais dans la pratique on se retrouve immanquablement dans des équipes composées de différentes personnes de niveaux parfois inégaux et là, il y pas de raison de ne pas être preneur de toutes les vérifications et sécurités qu'on peut nous proposer, surtout quand elles sont gratuites et automatiques.
3  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 25/05/2015 à 11:44
Citation Envoyé par Ph. Marechal Voir le message
Quels langages modernes ? On croit rêver en lisant ça - c'est tout juste si les programmeurs C/C++ ne sont pas traités de vieux croutons - tout en leur reconnaissant quand même l'efficacité et le contrôle de bas niveau !
Même s'ils continuent d'évoluer, C et C++ sont clairement plus ancien, et ont donc un historique qui va avec. Ce n'est pas insulter les utilisateur du langage que de le relever.

Citation Envoyé par Ph. Marechal Voir le message
Pourquoi ne pas faire une bibliothèque, un Framework ou une API en C/C++, pas la peine de créer un dit "nouveau" langage qui serait "moderne".
Une bibliothèque C++ ne résoudra pas tous les problèmes : certains sont inhérents au langage lui même. Rust garantit la sécurité mémoire à la compilation, ce qui est impossible en C++, sans casser sa compatibilité.
Une bibliothèque a souvent un coût à l'exécution et les cas d'erreur sont traités a l’exécution.

Citation Envoyé par Ph. Marechal Voir le message
La sécurité : je m'en charge et la commodité : elle vient toute seule avec l'expérience - donc je vais laisser Rust rouiller dans son coin et surtout ne pas m'embarquer là-dedans
Tu m'expliqueras pourquoi dans toutes les applications les plus contrôlées au monde avec des système de revue, on découvre pourtant régulièrement des failles de sécurités. Et ce n'est pas une insulte à tes talents de programmeur, que de dire que je suis certain que tes programmes ne sont certainement pas si sur que tu le penses.

Citation Envoyé par _skip Voir le message
Je ne comprends jamais les réactions négatives dès qu'on parle d'un nouveau langage, surtout quand celui-ci s'attaque à de vrais problèmes. C'est bizarrement très récurrent sur DVP, que ce soit sur des alternatives au javascript (typescript, dart), aux langages pour la jvm (ceylon, kotlin, fantom) ou au C++ et consors (Rust ou Go).
Je pense que c'est surtout que pas mal de gens ont une approche conservatrice : il voient leur langage fétiche comme un aboutissement et n'imaginent pas qu'il y en ai besoin d'autre.
Il voient un autre langage comme une remise en cause de ce qu'ils ont fait avec leur langage habituel ou craignent à tort qu'il rende le leur obsolète et de se retrouver a devoir réapprendre un nouveau langage et perdre le savoir faire qu'il ont capitalisé.
3  0 
Avatar de esperanto
Membre éprouvé 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?
2  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 19/01/2015 à 10:34
Citation Envoyé par gstratege Voir le message
Selon vous, pourquoi Mozilla a besoin de ce nouveau OS ?
C'est un langage de programmation, pas un OS...
2  0 
Avatar de imperio
Membre chevronné https://www.developpez.com
Le 10/04/2015 à 10:24
Citation Envoyé par yahiko Voir le message
Je n'ai toujours pas compris pourquoi Mozilla s'embarquait dans cette galère alors qu'ils ont à mon humble avis d'autres priorités plus urgentes (comme améliorer les performances de Firefox qui commence à tirer la langue).

Rust a-t-il un avenir ? Je ne crois pas hélas.
Etant donné le nombre de personnes qui soutiennent ce projet, je pense que ton avis n'est pas très éclairé et encore moins représentatif de la réalité...

Citation Envoyé par patmaba
Encore un langage supplémentaire dans la jungle du web. Apres Dart, Typescript. Qu'ont-ils tous à vouloir créer leur propre langage ? Ils veulent tous remplacer le javascript. Aucun n'y parviens. Qu'est ce qui se cache derrière toutes cette énergie à vouloir absolument remplacer le js ? Pourquoi ne se concentre-t’il pas sur le ECMASScript6 ? Quelque chose m'échappe ?
Absolument rien à voir. Rust est un langage qui se place plutôt comme concurrent au C++ plutôt qu'à un langage web. Essaie de te renseigner un peu plus sur le sujet.
2  0 
Avatar de BugFactory
Membre expérimenté https://www.developpez.com
Le 10/04/2015 à 13:28
Justement, Rust est un outil pour y parvenir.
2  0