L'équipe en charge de Rust annonce Rust 2018,
Deux mots-clés ont été ajoutés, async et await pour faciliter l'écriture de code asynchrone

Le , par Bill Fassinou, Chroniqueur Actualités
Rust est un langage de programmation compilé multi-paradigme conçu et développé par Mozilla Research. Il a été conçu pour être « un langage sécurisé, concurrent, pratique », supportant les styles de programmation purement fonctionnel, modèle d'acteur, procédural, ainsi qu'orienté objet sous certains aspects. C'est un langage statiquement typé initialement conçu par Graydon Hoare en 2006 dont le développement est désormais soutenu par Mozilla Research. Ses maîtres mots sont : sécurité, concurrence, rapidité et le doit en partie à son backend LLVM qui offre de nombreux outils destinés à l’optimisation des instructions. La philosophie du langage est de fournir au développeur les outils pour écrire des programmes dont l’intégrité est plus difficilement mise en péril (p. ex. mauvaise gestion de la mémoire, de la fermeture des flux) qu’avec un autre langage qui ne se soucie pas forcément de ses problématiques dans sa conception, tout en s’efforçant d’entretenir une rapidité d’exécution redoutable.

L'équipe Rust annonce une nouvelle version de Rust, la version 1.31.0 et "Rust 2018". La sortie de Rust 1.31.0 ce 6 décembre est la première parution de "Rust 2018" qui marque l'aboutissement des trois dernières années du développement de Rust. il peut être difficile d'expliquer exactement ce qu'est Rust 2018. Certaines personnes y voient une nouvelle version du langage, mais pas vraiment. Car, cela ne fonctionne pas comme le versioning dans d'autres langues. Dans la plupart des autres langues, lorsqu'une nouvelle version du langage apparaît, toutes les nouvelles fonctionnalités sont ajoutées à cette nouvelle version. Les éditions Rust sont différentes. C'est à cause de la façon dont la langage évolue. Presque toutes les nouvelles fonctionnalités sont compatibles à 100 % avec Rust en l'état. Ils ne nécessitent pas de changements majeur. Cela signifie qu'il n'y a aucune raison de les limiter au code Rust 2018. Les nouvelles versions du compilateur continueront à prendre en charge le « mode Rust 2015 ».


Deux nouveaux concepts ont été ajoutés. Il s'agit de async et await. Au début, Rust n'avait pas prévu ces concepts. Ils facilitent l'écriture de code asynchrone sans que le code ne devienne trop lourd. Pour permettre d'ajouter cette fonctionnalité, il faut ajouter à la fois async et await comme mots clés. Pour ne pas rendre l'ancien code invalide (un code qui aurait pu utiliser les mots async ou en await en tant que noms de variables), l'équipe a ajouté ces mots-clés dans Rust 2018. Bien que la fonctionnalité ne soit pas encore disponible, les mots-clés sont maintenant réservés. Tous les changements décisifs nécessaires pour les trois prochaines années de développement (comme l’ajout de nouveaux mots-clés) sont effectués en une fois dans Rust 1.31. Ces changements dans Rust 2018 ne signifie pas que votre code va boguer. Votre code continuera à compiler même s’il a async ou en await en tant que nom de variable. Sauf indication contraire de votre part, le compilateur considère que vous souhaitez que votre code soit compilé de la même manière comme auparavant.

Une fois que Rust 2018 sera disponible, il aura presque le même aspect que Rust 2015. La plupart des modifications se produiront à la fois dans Rust 2018 et dans Rust 2015. Seules les quelques fonctions nécessitant des modifications importantes ne seront pas récupérées. Rust 2018 ne concerne cependant pas que des modifications du langage principale. Rust 2018 vise à rendre les développeurs de Rust plus productifs. Beaucoup de gains de productivité viennent de choses qui ne sont pas dans le langage principale comme l'outillage par exemple. L'équipe en charge du développement s'est également concentrer sur des cas d'utilisation spécifiques pour déterminer comment Rust peut être le langage le plus productif. Vous pouvez donc considérer Rust 2018 comme le spécificateur de Cargo.toml que vous utilisez pour activer les quelques fonctionnalités qui nécessitent des modifications importantes.

Dans le cadre de Rust 2018, l'équipe de Rust procédera à une refonte complète du site Web de Rust, ce qui en fera un outil utile pour les directeurs techniques et les ingénieurs. Il devrait être beaucoup plus facile de trouver des informations permettant d'évaluer Rust pour votre cas d'utilisation et de rester au courant des dernières améliorations en matière d'outillage et d'écosystème. L'un des objectifs de Rust 2018 consiste à démontrer la productivité de Rust dans des domaines d'utilisation spécifiques. Quatre domaines sont visés :

  • services réseau : la fiabilité et la faible empreinte de Rust en font un excellent partenaire pour les services et l'infrastructure réseau, en particulier à grande échelle ;
  • applications en ligne de commande (CLI) : la portabilité, la fiabilité, l'ergonomie et la capacité de Rust à produire des fichiers binaires statiques sont très utiles pour l'écriture d'applications CLI ;
  • WebAssembly : la norme Web « wasm » permet d'envoyer des fichiers binaires de type natif à tous les principaux navigateurs, mais le support de GC n'est plus que de nombreuses années. Rust est extrêmement bien placé pour cibler ce domaine et fournit une rampe d’accès raisonnable aux programmeurs JS ;
  • appareils embarqués : Rust a le potentiel de rendre la programmation d'appareils aux ressources limitées beaucoup plus productifs et amusants.


Chacun de ces domaines dispose d’un groupe de travail dédié pour l’année. Ces groupes de travail travailleront de manière transversale, en s’interfaçant avec les travaux relatifs aux langues, aux outils, aux bibliothèques et à la documentation.

Rappelons toutefois qu'en novembre 2015 Andrei Alexandrescu (un des co créateur du langage D) s’est prononcé sur Rust et nous parle de quelques avantages et inconvénients du langage. Selon lui, Rust est un langage disposant de théoriciens en langage de classe mondiale. Cela dénote de la précision et de la profondeur de l’approche technique de Rust. L’objectif de Mozilla en implémentant ce langage est d’offrir un langage sécurisé, concurrent, et disposant de fonctionnalités essentielles pour réaliser ce que l’on souhaite. Pour Andrei, l’aspect sécurité est un avantage à ne pas omettre dans les atouts de ce langage. Pour pouvoir atteindre la première version stable, l’équipe de Rust a mis environ cinq années en enchaînant préversion sur préversion. Selon Andrei, cela constitue un avantage, car le produit fini est meilleur et comporte moins de bogues. L’effet collatéral est que la communication autour des différentes itérations a été assez forte.

Selon Andrei, l’équipe de Rust alloue beaucoup d’efforts à la gestion de la mémoire, mais néglige les autres aspects du langage. Pour Andrei, la syntaxe de Rust est peu commune aux autres langages de développement. Cela pourrait être frustrant ou même constituer un frein au cas où certaines personnes n’auraient pas de motivation pour s’investir dans un tel apprentissage.

Source : Billet de blog

Et vous ?

Êtes-vous un développeur Rust ? Que pensez-vous de ces nouveautés annoncées ?

Voir aussi

La version stable de Rust 1.29 est désormais disponible ! premier jet de l'auto-correction des lints et potentielle compatibilité avec Clippy

La rubrique Rust : Cours et tutoriels Rust et la FAQ sur la programmation en langage Rust

Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

Rust, en bref


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 07/12/2018 à 10:32
Pour essayer de préciser ce qu'est l'édition 2018 de Rust, on peut le voir est comme une nouvelle version majeure du langage Rust dans le sens ou elle introduit de nouveaux mots clés et un mécanismes pour la notation des modules qui incompatibles avec la syntaxe de l'édition 2015. Mais ça n'est pas fait à la sauce Python ou Perl qui ont créé deux version du langage avec des compilateurs séparés, mais plutôt à la mode Java : Le code source de chaque crate (l’équivalent Rust du package) pourra au choix utiliser la syntaxe Rust 2015 ou 2018.

Toutes les crates, quelles que soit leur édition, pourront être traités par le même compilateur et interagir entre elles sans aucune limitation. Le passage a Rust 2018 est conseillé bien sur vu qu'il simplifie la syntaxe (il y a un outil pour automatiser la transition), mais les crates non migrées continueront à fonctionner de manière transparente.
Avatar de JPLAROCHE JPLAROCHE - Membre actif https://www.developpez.com
le 07/12/2018 à 10:49
Bonjour,
je suis heureux d'apprendre que le site de RUST vas être repensé , non en terme d'ergonomie mais dans la mise a dispo des informations et des exemples qui si raccrochent et qui ne sont pas toujours conforme à la doc, je souhaite que des exemples plus concret correspondant à des applicatifs que l'on pourrait écrire par exemple ayant attrait à la gestion d'entreprise ou de communication inter processus , nous montrant comment transposer des fondamentaux comme shm.h (C/C++)zone mémoire inter processus, ou les commandes execv(C/C++) par exemple, peut être suis- à coté de la plaque mais j'ai pas trouvé dans le site ..... Hello word marche bien pour être simpliste mais c'est pas suffisant.
Là par rapport à C/C++ on est très très loin du compte pour la doc , dommage car ce langage me parait aller de l'avant. Il est vrais que la communauté n'est pas aussi fourni ....

Merci @bientôt
Avatar de SimonDecoline SimonDecoline - Membre chevronné https://www.developpez.com
le 07/12/2018 à 11:51
Citation Envoyé par JPLAROCHE Voir le message
Bonjour,
je suis heureux d'apprendre que le site de RUST vas être repensé , non en terme d'ergonomie mais dans la mise a dispo des informations et des exemples qui si raccrochent et qui ne sont pas toujours conforme à la doc, je souhaite que des exemples plus concret correspondant à des applicatifs que l'on pourrait écrire par exemple ayant attrait à la gestion d'entreprise ou de communication inter processus , nous montrant comment transposer des fondamentaux comme shm.h (C/C++)zone mémoire inter processus, ou les commandes execv(C/C++) par exemple, peut être suis- à coté de la plaque mais j'ai pas trouvé dans le site ..... Hello word marche bien pour être simpliste mais c'est pas suffisant.
Là par rapport à C/C++ on est très très loin du compte pour la doc , dommage car ce langage me parait aller de l'avant. Il est vrais que la communauté n'est pas aussi fourni ....

Merci @bientôt
Salut
Concernant la doc, je suis complètement en désaccord avec toi. Rust a des vraies docs officielles, à jour et pédagogiques (notamment le rust book, https://doc.rust-lang.org/stable/boo...roduction.html). Au contraire, le C++ a des normes de 1500 pages incompréhensibles, une référence en ligne assez complète mais peu pédagogique (https://en.cppreference.com/w/), une super-faq assez désorganisée (https://isocpp.org) et des tonnes de blogs qui polluent le net de vieilles pratiques obsolètes.
Avatar de JPLAROCHE JPLAROCHE - Membre actif https://www.developpez.com
le 08/12/2018 à 0:41
Citation Envoyé par SimonDecoline Voir le message
Salut
Concernant la doc, je suis complètement en désaccord avec toi. Rust a des vraies docs officielles, à jour et pédagogiques (notamment le rust book, https://doc.rust-lang.org/stable/boo...roduction.html). Au contraire, le C++ a des normes de 1500 pages incompréhensibles, une référence en ligne assez complète mais peu pédagogique (https://en.cppreference.com/w/), une super-faq assez désorganisée (https://isocpp.org) et des tonnes de blogs qui polluent le net de vieilles pratiques obsolètes.
je n'ai nullement envie de polémiquer avec Toi mais il y a 1 semaines j'ai franchement pris le temps et tester et j'ai eu des problèmes.... j'ai fini par remettre cela a plus tard. c'est mon expérience.
j'ai suivi la procédure d'install tout a fonctionné , la dernière version , et j'ai pris les exemples en lignes sur la même page énoncé.

tu es désobligeant regarde il y a une communauté très active qui n'est pas limiter C/C++ https://stackoverflow.com cppreference.com n'est pas là pour être pédagogique , d'autre part le site québecois https://h-deb.clg.qc.ca/ est très pédagogique avec des exemples concrets.
ou encore en français le Livre "développement système sous Linux" de Christophe Blaes etc... et ne serait-ce que sur développez.net il y a d’excellent courts.
Ps je suis à la retraite j'ai le temps de tester et ce n'est pas la première fois que je remet mon métier ne serais-ce que pour la veille technologique.

je ne remet pas en cause RUST. au cas si vous n'aviez pas compris.
Merci
Avatar de SimonDecoline SimonDecoline - Membre chevronné https://www.developpez.com
le 08/12/2018 à 18:03
Citation Envoyé par JPLAROCHE Voir le message
je n'ai nullement envie de polémiquer avec Toi
moi non plus, mais je ne vois pas le rapport. On est sur un forum et j'ai autant le droit de donner mon avis que Toi.

Citation Envoyé par JPLAROCHE Voir le message
regarde il y a une communauté très active qui n'est pas limiter C/C++ https://stackoverflow.com
Rust est présent sur SO également et a en plus un forum officiel où les gens sont sympas, réactifs et compétents (https://users.rust-lang.org/).

Citation Envoyé par JPLAROCHE Voir le message
d'autre part le site québecois https://h-deb.clg.qc.ca/ est très pédagogique avec des exemples concrets.
Désolé mais non, je ne conseillerais pas ce site à quelqu'un qui veut apprendre le C++ : outre l'esthétique des années 90, il faut accéder à 3 pages surchargées avant d'enfin trouver le point "Démarer avec C++", qui renvoie vers la super-faq C++...

Citation Envoyé par JPLAROCHE Voir le message
ou encore en français le Livre "développement système sous Linux" de Christophe Blaes etc...
Non, le livre "développement système sous Linux" n'est pas un bon livre pour apprendre le C++ moderne. Et si c'est pour avoir des exemples, le site de Rust a une section "Rust by Example" ainsi que des livres thématiques "Command Line Book", "WebAssembly Book" et "Embedded Book", le tout disponible en ligne et gratuitement (https://www.rust-lang.org/learn).

Citation Envoyé par JPLAROCHE Voir le message
je ne remet pas en cause RUST. au cas si vous n'aviez pas compris.
Merci
je ne remet pas en cause C++. au cas si vous n'aviez pas compris.
Merci
Avatar de JPLAROCHE JPLAROCHE - Membre actif https://www.developpez.com
le 09/12/2018 à 1:58
moi non plus, mais je ne vois pas le rapport. On est sur un forum et j'ai autant le droit de donner mon avis que Toi.
bien-sur mais j'ai vraiment l'impression que tu te fâches....

Désolé mais non, je ne conseillerais pas ce site à quelqu'un qui veut apprendre le C++ : outre l'esthétique des années 90, il faut accéder à 3 pages surchargées avant d'enfin trouver le point "Démarer avec C++", qui renvoie vers la super-faq C++..
.

il y a des exemples clair , perso cela ma permis de comprendre les variadiques

Non, le livre "développement système sous Linux" n'est pas un bon livre pour apprendre le C++ moderne. Et si c'est pour avoir des exemples, le site de Rust a une section "Rust by Example" ainsi que des livres thématiques "Command Line Book", "WebAssembly Book" et "Embedded Book", le tout disponible en ligne et gratuitement (https://www.rust-lang.org/learn).
cela ma permis de comprendre les mécanismes de msg.h et de shm.h ou des thread .....

j'ai recharger rust .
apparemment la version a changé , je vais redescendre mes tests je vais voir....
je reprend rustc et les options je veux me servir de makefile je compile correctement avec le paramétrage des option RUSTFLAGS ect..... avec des programme de type ET_DYN

j'ai quand même un probleme en c/c++ on peut compiler avec l'option -no-pie ( ET_EXEC ) qui permet d'avoir un exécutable batch j'ai chercher je n'ai pas trouvé l’équivalence

ps( j'ai trouve -C link-args=-no-pie ) mais c'était laborieux il a fallu que je plante completement avec -C link-args=static(un argument bidon) pour voir toute les options de compilation de CC

je n'ai pas trouvé d'explication ci ce n'est de mon experience en ayant la façon dont le compilateur réalise l'executable pourtant j'ai passé un bon nombre d'heure de lecture ..... mais il est vrais ce ne sont pas des paramètres mis en avant dans la doc., pour apprendre ....

je voudrais transposer une application qui uilise shm msg execv database sqlite et postressql GTK et GTK vetterm . pour voir ..... me faire une vrais idée. J'ai le temps ....

donc je reprends les cours dans la doc depuis le debut , là je vais attaquer les propriétés , donc je suis en très loin de pouvoir réaliser le projet CLIENT

merci
j'avoue que le bascule du c/c++ vers rust est très très déroutant enfin pour moi , je pense qu'il ne faut pas que cherche à faire du c/c++ pour faire du rust.

autre demande :
j'aimerais qu'il y ai une vrais faq sur rustc et avec des exemples et moins succin, car je trouve cargo un peu lourd générant des dossiers inutiles pour faire des applications ex gestion d'un fichier d'adresse complet et commercial/livraison /facturation , mais j'avoue ne pas vouloir tout faire en même temps apprendre le langage .... donc je reste sur rustc avec ses paramètres et makefile dont j'ai l'habitude de me servir , ceci dit une faq sur cargo avec des exemples serait le bienvenue, peut-être je demande trop parce certainement vous travaillez et que c'est encore un investissement supplémentaire.

Merci d'avoir pris le temps de me répondre.
Avatar de Pierre Louis Chevalier Pierre Louis Chevalier - Expert éminent sénior https://www.developpez.com
le 09/12/2018 à 2:13
Contacter le responsable de la rubrique Accueil