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