Parmi les nouvelles fonctionnalités, le point le plus important demeure l’introduction de la nouvelle commande « Cargo install » permettant d’installer localement sur le système les packages d’application hébergés sur la plateforme crates.io.
Nous rappelons que cette fonctionnalité a été depuis longtemps réclamée par les développeurs afin de pouvoir installer des packages qui sont hors du manifest. En réponse, Mozilla avait intégré la mise en œuvre de cet outil dans sa feuille de route couvrant les futures fonctionnalités de Rust.
Dans cette présentation, trois axes avaient été définis parmi lesquels l’implémentation de fonctionnalités permettant au gestionnaire de packages Cargo d’installer des binaires. Cela aurait pour avantage d’offrir aux développeurs Rust des moyens plus aisés pour partager les applications Rust.
Avec cette nouvelle itération, les développeurs peuvent utiliser la nouvelle commande Cargo install pour installer des applications, mais également pour installer de nouvelles sous-commandes pour cargo lui-même. Comme nouvelles sous-commandes disponibles pour étendre les fonctionnalités de Cargo, nous avons par exemple :
- cargo-count : qui permet d’afficher les statistiques telles que le code, les commentaires, les compteurs concernant les projets ;
- cargo-graph : cette sous-commande permet de construire les fichiers GraphViz DOT des graphes de dépendance ;
- cargo-edit : qui permet d’ajouter une fonctionnalité à Cargo afin d’éditer des dépendances pour un projet à partir d’une ligne de commande ;
- cargo-readme : permettant de générer du contenu README.md à partir des commentaires de la documentation ;
- cargo-check : permettant de vérifier un projet de manière statique sans toutefois produire de binaire ;
- cargo-script : qui permet d’exécuter des scripts Rust assez facilement en se servant de l’écosystème de package de Rust ;
- Cargo-watch : qui permet de réexécuter une commande de Cargo lorsque des modifications sont effectuées dans le projet ;
- cargo-extras : est une collection de sous-commandes de Cargo ;
- cargo-outdated : est une sous-commande de Cargo pour l’affichage lorsque les dépendances sont obsolètes.
À côté de ces fonctionnalités, Rust 1.5 connait également un certain nombre de stabilisations au niveau des API de bibliothèques. À ce sujet, nous avons de manière non exhaustive les API suivantes qui ont été améliorées : BinaryHeap::from, BinaryHeap::into_sorted_vec, FileTypeExt::is_block_device, FileTypeExt::is_char_device, Formatter::alternate, Formatter::fill, Iterator::cmp, Iterator::eq, Path::canonicalize, Path::exists, Utf8Error::valid_up_to, Vec::resize, VecDeque::as_mut_slices, slice::split_first_mut, slice::split_first, str::MatchIndices, str::RMatchIndices.
En outre, lorsque vous créez des packages, les dépendances d’un crate sont associées à des contraintes qui exigent de définir les versions de dépendances avec lesquelles ce crate est compatible. Ces versions de dépendances peuvent être de l’ordre d’une seule version précisée de cette manière (=1.2.3), de plusieurs versions (^1.2.3, ~1.2.3, >= 1.2.3, < 3.0.0) ou de toutes les versions de dépendance matérialisées par le caractère générique (*).
Nous rappelons en outre qu’un crate est une unité de compilation qui peut servir à générer une bibliothèque ou un package. Et pour cette nouvelle version de Rust, le processus RFC (Request For Comments) de la communauté Rust a proposé la mise à jour de crates.io afin de rejeter les publications de crates utilisant une contrainte de version générique pour définir les dépendances de compilation et de construction de build associées au projet.
En conséquence, les crates utilisant les dépendances avec le caractère générique (*) dans cette version 1.5 déclencheront des avertissements à la publication. Et pour la version 1.6, il ne sera plus possible de publier des crates associant des dépendances avec le caractère générique (*).
Enfin, Mozilla annonce dans cette nouvelle mouture des améliorations au niveau du temps de compilation et une réduction des métadonnées de crate d’environ 20 %. Plusieurs autres améliorations et nouvelles fonctionnalités sont disponibles au niveau du langage, de bibliothèques, des divers et bien d’autres encore.
Source : Blog Rust
Et vous ?
Que pensez-vous des nouvelles fonctionnalités de Rust 1.5 ?
Quelles sont les améliorations que vous souhaitez voir dans les prochaines versions de Rust ?
Voir aussi
Forum Autres langages