Rust versions 1.1, 1.2 et 1.3

52
23
sept.
2015
Technologie

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

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

Annonce officielle (en)

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

Annonce officielle (en)

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

Annonce officielle (en)

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 :

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

Articles

Livres et tutoriels

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 . É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 (page perso) . É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 (page perso) . É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 . Évalué à 2. Dernière modification le 24/09/15 à 14:33.

    Version 1.1 :

    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.

    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 et c++ ?

    • [^] # Re: Ce qui m’a fait tiquer…

      Posté par (page perso) . É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 . É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 à ceux qui les ont postés. Nous n'en sommes pas responsables.