D’après Wikipédia, « 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 », prenant en charge les styles de programmation purement fonctionnelle, modèle d'acteur, procédurale et orientée objet. »
Rust a été largement couvert sur LinuxFr.org, à travers les versions 0.7, 0.8, 0.9, 0.10, 0.11, 0.12, la version 1.0-alpha, et enfin la version 1.0.
Sommaire
Rust 1.1
Comme à chaque version, la version stable 1.1, publiée le 25 juin 2015, est le résultat du travail de la géniale et active communauté Rust. Cette version voit le jour grâce à 168 contributrices et contributeurs.
Changements techniques
Une des principales priorités pour Rust après la sortie de la 1.0 était d’améliorer les temps de compilation. Grâce à l’important travail de plusieurs contributrices et contributeurs, le temps de compilation a été réduit de 32 % par rapport à la version précédente.
Un autre point majeur a été d’améliorer les messages d’erreurs du compilateur. À nouveau grâce à plusieurs contributrices et contributeurs, une grande partie des erreurs du compilateur inclut maintenant une explication plus détaillée, accessible grâce à l’option --explain
.
De plus, la version 1.1 apporte d’importantes nouvelles fonctionnalités :
- Nouvelles API
std::fs
. Cette version stabilise un grand ensemble d’extensions aux API du système de fichiers, permettant, par exemple, de compiler Cargo avec une version stable de Rust. - Prise en charge de musl. Il est maintenant possible de cibler musl sous GNU/Linux. Les binaires construits de cette façon sont statiquement liés et n’ont pas de dépendances.
-
cargo rustc
. Il est maintenant possible de construire un paquet Cargo en passant des options à rustc.
Plus de détails dans les notes de version.
Nouvelles de la communauté
Une nouvelle « sous-équipe » a été formée, complètement dévouée à la communauté Rust. L’équipe a plusieurs responsabilités, telles que l’agrégation de ressources pour les rencontres (meetups) et autres évènements, encourager la diversité dans la communauté avec de l’aide, des règles et de la sensibilisation, et travailler avec leurs clientes et client finaux initiaux en production et l’équipe noyau (core team) pour aider à la priorisation.
De plus, la première conférence Rust officielle, RustCamp, a eu lieu le 1er août 2015, à Berkeley, Californie, États-Unis. Vous pouvez retrouver la liste des conférences et la liste de lecture sur Youtube
Rust 1.2
La version stable 1.2, sortie le 6 août, représente le dur labeur de 180 formidables personnes.
Améliorations des temps de compilation
- Une amélioration généralisée des performances du compilateur. Quelques caisses (crate, équivalent Rust de « bibliothèque » ou « paquet » dans d’autres langages) représentatives : hyper (compilation 1,16 × plus rapide), html5ever (1,62 × plus rapide), regex (1,32 × plus rapide) et rust-encoding (1,35 × plus rapide). Vous pouvez explorer certaines de ces données de performance sur le site préliminaire de surveillance de Nick Cameron, en utilisant les dates dates 2015-05-15 à 2015-06-25.
- La génération de code en parallèle (parallel codegen) est maintenant fonctionnelle, la vitesse est améliorée de 33 % sur une machine à quatre cœurs. Elle est particulièrement utile pour les compilations en mode débogage puisqu’elle empêche certaines optimisations ; mais elle peut aussi être utilisée avec des optimisations avec l’option
-01
. Elle peut être activée en passant-C codegen-units=N
à rustc, où N est le nombre de tâches (thread) choisi.
Amélioration de la performance de Cargo
- Les constructions ne nécessitant pas de recompilation (“no-op builds”) pour les larges projets sont beaucoup plus rapides : pour Servo, le temps de construction est passé de 5 secondes à 0,5 secondes.
- Cargo gère maintenant les dossiers cibles partagés qui mettent en cache les dépendances entre plusieurs paquets, ce qui permet de réduire considérablement les temps de construction pour des projets complexes.
Autres changements
La version 1.2 ajoute la prise en charge de la chaîne de compilation MSVC (Microsoft Visual C), en plus de celle de GNU. Résultat, le code Rust peut dorénavant être directement être lié avec le code produit par la chaîne native de Windows. Le compilateur fonctionne avec MSVC, et toutes les caisses rust-lang sont en train d’être testés avec MSVC. La gestion de l’unwinding (déroulage de boucles) n’est pas disponible (le processus s’interrompt brusquement), mais du travail est en cours pour corriger cela.
Du côté du langage, Rust 1.2 marque la continuation du travail sur les type à taille dynamique, permettant aux pointeurs intelligents comme Rc de s’utiliser de manière transparente avec des arrays ou des traits, de telle sorte que Rc<[T]>
soit entièrement utilisable. Cette amélioration fonctionne pour tous les pointeurs intelligents de la bibliothèque standard. La gestion des types externes de pointeurs intelligents sont disponibles dans les versions nocturnes et seront bientôt stabilisées.
Plus de détails dans les notes de version.
Rust 1.3
La version 1.3 est sortie le 17 septembre 2015 grâce au travail de 103 membres de sa communauté.
C’est la première version publiée avec le Rustonomicon, un nouveau livre couvrant « Les arts noirs de la programmation avancée et non-sure Rust ». Même s’il est encore en brouillon, ce livre couvre déjà les recoins les plus sombres de Rust.
Bibliothèque
Côté bibliothèque, de nombreuses API ont été stabilisées, parmi lesquelles la nouvelle API Duration
et des améliorations à Error
et Hash
/Hasher
. Il est prévu que l’expansion du module std::time
continue jusqu’à la 1.5.
Un travail constant a été effectué sur la performance. La plupart des gains sont dans la bibliothèque standard :
- La recherche de sous-chaîne utilise dorénavant un algorithme plus efficace.
- Des améliorations apportées au remplissage de zéros accélèrent
Vec::resize
etRead::read_to_end
. - L’implémentation de
Read::read_to_end
a été spécialisée pourstdin
etFile
, permettant des améliorations de performance. - L’implémentation de
PartialEq
sur les « tranches » (slices) est maintenant bien plus rapide.
Autres changements
Nous continuons à investir dans Windows, avec la gestion préliminaire de Windows XP. Bien que le but ne soit pas de faire de Windows XP une plateforme privilégiée, il est maintenant possible de compiler du code Rust pour XP tant que vous évitez certaines parties de la bibliothèque standard. Du travail sur l’intégration de la chaîne de compilation MSVC est en cours, avec la prise en charge totale (en 64 bits) disponible dans la bêta 1.4 d’aujourd’hui.
Du côté de Cargo, nous avons ajouté la gestion du plafonnage de lint comme spécifié par une RFC antérieure. L’idée est que les lints dans vos dépendances ne devraient affecter votre capacité à compiler proprement, ce qui permet d’ajuster facilement la façon dont les lints fonctionnent sans trouble excessif pour l’écosystème.
Plus de détails dans les notes de version.
Quoi d’autre depuis Rust 1.0 ?
Voici quelques informations ou contenus intéressants publiés après la sortie de la 1.0.
Évènements
- Rust entre dans le top 50 de l’index TIOBE de cette année (septembre 2015) ! Le célèbre mais controversé index TIOBE mesure la popularité des langages de programmation. Rust vient de faire son arrivée à la 50e place du classement, on a hâte de voir à quelle vitesse et combien il prendra de places !
- Le groupe rust-gnome devient Gtk-rs et a maintenant un blog.
- Crates.io célèbre sa 3 000e caisse (bibliothèque) !
Articles
- Texte de la conférence éclair pour la sortie de Rust.
- things rust shipped without (« fonctionnalités absentes de rust »)
- SIMD in Rust (SIMD dans Rust)
- Bibliothèque OpenGL glium (voir la discussion sur Reddit)
- On parle de Rust dans le dernier GNU/Linux magazine !
- Python modules in Rust (on peut aussi voir The Rust FFI Omnibus pour plus d’informations sur comment utiliser du code Rust depuis de multiples langages)
- Another Year With Conrod, récapitulatif des avancées depuis un an sur la bibliothèque Conrod, « Une bibliothèque 2D facile d’utilisation écrite entièrement en Rust » qui fait partie du projet Piston, « un moteur de jeu modulaire écrit en Rust ».
- A Pythonista's irresistible attraction to Rust (« L’irrésistible attirance d’un pythoniste pour Rust »), et les commentaires sur Reddit.
- Thèse sur la création d’un système d’exploitation de type Unix en Rust, voir les commentaires sur Reddit.
- « Lock-freedom without garbage collection » (« Structures concurrentes sans verrous, sans ramasse-miettes »), voir les commentaires sur Reddit
- Designing a GC in Rust (« Concevoir un ramasse-miettes en Rust »), voir les commentaires sur Reddit
- An introduction to timely dataflow (« Une introductiion aux flux de données opportuns »). Tutoriel sur une bibliothèque permettant d’écrire des programmes qui passent à l’échelle pour un grand nombre d’ouvriers (workers : threads, processus, ordinateurs, etc.). Plus d’informations.
- LALRPOP, un générateur de parseur LR(1) en Rust.
Livres et tutoriels
- Livre « The Rust Programming Language » publié par No Starch Press
- Livre gratuit (PDF) des éditions O’Reilly : Why Rust? Trustworthy, Concurrent Systems Programming (« Pourquoi Rust ? Programmation fiable de Systèmes Concurrents »)
- Rust-101, tutoriel pratique (par opposition à théorique) pour débuter en Rust
- Learning Rust With Entirely Too Many Linked Lists (« Apprendre Rust avec vraiment trop de listes chainées »), tutoriel pour apprendre Rust en implémentant différents types de listes chainées
- Tutoriel Rust, une introduction à Rust en français
- Tutoriel « Rust Error Handling », tutoriel sur la gestion d’erreurs en Rust
Pour plus de détails, vous pouvez consultez les articles « This Week in Rust » (les changements depuis la sortie de la version 1.0 commencent à l’édition 81).
N’oubliez pas que vous pouvez venir aux rencontres Rust organisées chaque mois dans les locaux de Mozilla, pour apprendre ou approfondir Rust et discuter autour d’une pizza !
# merci
Posté par Dreammm . Évalué à 2.
Ce genre d'article est excellent, qui permet de suivre un domaine dans lequel on n'a pas encore eu le temps de se plonger soi même.
Petite coquille : (tout à la fin)
«Trustworthy, Concurrent Systems Programming » : la traduction serait plutôt «Programmation fiable de Systèmes Concurrents » à la place de « Programmation des systèmes fiable et concurrente »
[^] # Re: merci
Posté par Nÿco (site web personnel) . Évalué à 3.
Corrigé.
En effet, c'est encore une news énorme que l'espace ouvert de rédaction a produit : 7 contributeurs, 166 éditions !
[Hors-sujet, désolé] Connaissez-vous de tels systèmes de rédaction collaborative de news ? Il y a bien wikinews, mais en existe-t-il d'autres ?
[^] # Re: merci
Posté par Goffi (site web personnel, Mastodon) . Évalué à 2.
officiellement sur un site je n'en connais pas, mais ponctuellement on utilise souvent etherpad/framapad pour rédiger des articles ou faire des corrections.
# Ce qui m’a fait tiquer…
Posté par Anthony Jaguenaud . Évalué à 2. Dernière modification le 24 septembre 2015 à 14:33.
Version 1.1 :
J’avais voulu installer Rust à partir des sources lors de la sortie de la 1.0, et je n’avais pas réussi à compiler Cargo. Je comprends maintenant pourquoi, mais j’aurais aimé que ça soit stabilisé pour la 1.0.
Une question pour ceux qui suivent ce langage de près, le langage est-il stable grammaticalement ? Reste-il beaucoup de fonction à ajouter ?
Est-il prévu un comité de normalisation comme le
c
etc++
?[^] # Re: Ce qui m’a fait tiquer…
Posté par Lizzie Crowdagger (site web personnel) . Évalué à 4.
«Une question pour ceux qui suivent ce langage de près, le langage est-il stable grammaticalement ?»
Au niveau de la syntaxe c'est à peu près stable : du code écrit en version 1.0 devrait fonctionner pour toute 1.x, par contre ça ne veut pas dire qu'il ne peut pas y avoir de nouvelle fonctionnalité ajoutée au langage lui-même.
Pour ce qui est de la bibliothéque standard c'est un peu différent : il y encore des fonctionnalités qui sont "unstable" (qu'on peut utiliser uniquement avec la version nightly) et qui, comme leur nom l'indique, peuvent changer ou disparaître dans les futures versions. Pour le reste normalement c'est aussi rétrocompatible pour 1.X.
«Reste-il beaucoup de fonction à ajouter ?»
Je pense que ça dépend ce dont t'as besoin ^ Perso je trouve que c'est en général utilisable, mais a) y'a des trucs qui peuvent/vont être améliorés b) il y a pas mal de bibliothèques tiers-partie qui sont assez jeunes (voire manquantes), ce qui est assez inévitable pour un langage récent.
[^] # Re: Ce qui m’a fait tiquer…
Posté par Porkepix . Évalué à 5.
Pour ce qui est du développement du langage, pour autant que je sache, tout se passe par RFC, comme visible là : https://github.com/rust-lang/rfcs
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.