URL: https://linuxfr.org/news/rust-versions-1-1-1-2-et-1-3 Title: Rust versions 1.1, 1.2 et 1.3 Authors: ariasuni M5oul, Nÿco, Benoît Sibaud, BAud, Lizzie Crowdagger, Ontologia, Bruno Michel et Sylvestre Ledru Date: 2015年09月11日T12:54:20+02:00 License: CC By-SA Tags: rust, mozilla, programmation et langage Score: 52 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](https://www.rust-lang.org/logos/rust-logo-blk.svg) Rust a été largement couvert sur LinuxFr.org, à travers les versions [0.7](https://linuxfr.org/users/guiea_7/journaux/sortie-de-rust-0-7), [0.8](https://linuxfr.org/news/presentation-de-rust-0-8), [0.9](https://linuxfr.org/news/quelques-nouvelles-sur-rust-a-l-occasion-de-la-0-9), [0.10](https://linuxfr.org/news/rust-s-oxyde-en-version-0-10), [0.11](https://linuxfr.org/news/encore-une-couche-de-rouille-avec-rust-0-11), [0.12](https://linuxfr.org/news/rust-0-12-non-pas-le-jeu-video-le-langage), la version [1.0-alpha](https://linuxfr.org/news/le-langage-rust-en-version-1-0-alpha-on-arrete-de-tout-casser), et enfin la version [1.0](https://linuxfr.org/news/rust-1-0-entree-dans-la-periode-stable). ---- ---- # Rust 1.1 [Annonce officielle (en)](http://blog.rust-lang.org/2015/06/25/Rust-1.1.html) 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](http://blog.rust-lang.org/2015/06/25/Rust-1.1.html#contributors-to-1-1). ## 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](http://www.musl-libc.org/) 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](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-110-june-2015). ## 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 1^er août 2015, à Berkeley, Californie, États-Unis. Vous pouvez [retrouver la liste des conférences](http://confreaks.tv/events/rustcamp2015) et la [liste de lecture sur Youtube](https://www.youtube.com/playlist?list=PLE7tQUdRKcybdIw61JpCoo89i4pWU5f_t) # Rust 1.2 [Annonce officielle (en)](http://blog.rust-lang.org/2015/08/06/Rust-1.2.html) La version stable 1.2, sortie le 6 août, représente le dur labeur de [180 formidables personnes](http://blog.rust-lang.org/2015/08/06/Rust-1.2.html#contributors-to-1-2). ## 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](https://crates.io/crates/hyper) (compilation 1,16 ×ばつ plus rapide), [html5ever](https://crates.io/crates/html5ever) (1,62 ×ばつ plus rapide), [regex](https://crates.io/crates/regex) (1,32 ×ばつ plus rapide) et [rust-encoding](https://crates.io/crates/encoding) (1,35 ×ばつ plus rapide). Vous pouvez explorer certaines de ces données de performance sur le [site préliminaire de surveillance](http://www.ncameron.org/perf-rustc/) 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](https://fr.wikipedia.org/wiki/Servo_%28moteur_de_rendu%29), 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](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-120-august-2015). # Rust 1.3 [Annonce officielle (en)](http://blog.rust-lang.org/2015/09/17/Rust-1.3.html) La version 1.3 est sortie le 17 septembre 2015 grâce au travail de [103 membres de sa communauté](http://blog.rust-lang.org/2015/09/17/Rust-1.3.html#contributors-to-1-3). C’est la première version publiée avec le [Rustonomicon](https://doc.rust-lang.org/nightly/nomicon/), 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](https://github.com/rust-lang/rust/pull/26327). - Des améliorations apportées au [remplissage de zéros](https://github.com/rust-lang/rust/pull/26849) accélèrent `Vec::resize` et `Read::read_to_end`. - L’implémentation de `Read::read_to_end` a été [spécialisée pour `stdin` et `File`](https://github.com/rust-lang/rust/pull/26950), permettant des améliorations de performance. - L’implémentation de `PartialEq` sur les [« tranches » (_slices_)](https://doc.rust-lang.org/stable/std/slice/index.html) est maintenant [bien plus rapide](https://github.com/rust-lang/rust/pull/26884). ## Autres changements Nous continuons à investir dans Windows, avec [la gestion préliminaire de Windows XP](https://github.com/rust-lang/rust/pull/26601). 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](https://github.com/rust-lang/rust/pull/27260) comme spécifié par une [RFC antérieure](https://github.com/rust-lang/rfcs/pull/1193). L’idée est que les [lints](https://en.wikipedia.org/wiki/Lint_%28software%29) 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](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-130-september-2015). # 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](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) (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 50^e 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](https://www.reddit.com/r/rust/comments/3jv5aa/rustgnome_organization_has_been_renamed_to_gtkrs/). - [Crates.io](https://crates.io/) célèbre sa 3 000^e caisse (bibliothèque) ! ## Articles - [Texte de la conférence éclair pour la sortie de Rust](https://graydon2.dreamwidth.org/214016.html). - [things rust shipped without](https://www.reddit.com/r/rust/comments/3c0qj4/things_rust_shipped_without/) (« fonctionnalités absentes de rust ») - [SIMD in Rust](https://huonw.github.io/blog/2015/08/simd-in-rust/) ([SIMD](https://fr.wikipedia.org/wiki/Single_instruction_multiple_data) dans Rust) - [Bibliothèque OpenGL glium](https://medium.com/@tomaka/the-glium-library-5be149d87dc1) (voir [la discussion sur Reddit](https://www.reddit.com/r/rust/comments/3hqopi/the_glium_library/)) - On parle de Rust dans [le dernier GNU/Linux magazine](http://boutique.ed-diamond.com/gnulinux-magazine/882-gnulinux-magazine-185.html) ! - [Python modules in Rust](https://ehiggs.github.io/2015/07/Python-Modules-In-Rust/) (on peut aussi voir [The Rust FFI Omnibus](http://jakegoulding.com/rust-ffi-omnibus/) pour plus d’informations sur comment utiliser du code Rust depuis de multiples langages) - [Another Year With Conrod](http://blog.piston.rs/2015/08/26/another-year-with-conrod/), récapitulatif des avancées depuis un an sur la bibliothèque [Conrod](https://github.com/PistonDevelopers/conrod), « Une bibliothèque 2D facile d’utilisation écrite entièrement en Rust » qui fait partie du projet [Piston](http://www.piston.rs/), « un moteur de jeu modulaire écrit en Rust ». - [A Pythonista's irresistible attraction to Rust](http://hardcoded.net/articles/pythonistas-irresistible-attraction-rust) (« L’irrésistible attirance d’un pythoniste pour Rust »), et [les commentaires sur Reddit](https://www.reddit.com/r/rust/comments/3kzhtl/a_pythonistas_irresistible_attraction_to_rust/). - [Thèse sur la création d’un système d’exploitation de type Unix en Rust](https://scialex.github.io/reenix.pdf), voir [les commentaires sur Reddit](https://www.reddit.com/r/rust/comments/341v3n/cs_honors_thesis_reenix_implementing_a_unixlike/). - [« Lock-freedom without garbage collection »](http://aturon.github.io/blog/2015/08/27/epoch/) (« Structures concurrentes sans verrous, sans ramasse-miettes »), voir [les commentaires sur Reddit](https://www.reddit.com/r/rust/comments/3imtya/lockfreedom_without_garbage_collection_aaron/) - [Designing a GC in Rust](https://manishearth.github.io/blog/2015/09/01/designing-a-gc-in-rust/) (« Concevoir un ramasse-miettes en Rust »), voir [les commentaires sur Reddit](https://www.reddit.com/r/rust/comments/3j4bx2/designing_a_gc_in_rust/) - [An introduction to timely dataflow](https://github.com/frankmcsherry/blog/blob/7a1174e80134c8ce5338d5c62864a2aae835da04/posts/2015-09-14.md) (« 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](https://github.com/frankmcsherry/timely-dataflow/blob/master/README.md). - [LALRPOP](http://smallcultfollowing.com/babysteps/blog/2015/09/14/lalrpop/), un générateur de parseur [LR(1)](https://en.wikipedia.org/wiki/Canonical_LR_parser) en Rust. ## Livres et tutoriels - [Livre « The Rust Programming Language » publié par No Starch Press](https://www.reddit.com/r/rust/comments/3k4rcb/the_rust_programming_language_is_going_to_be/) - Livre gratuit (PDF) des éditions O’Reilly : [Why Rust? Trustworthy, Concurrent Systems Programming](http://www.oreilly.com/programming/free/files/why-rust.pdf) (« Pourquoi Rust ? Programmation fiable de Systèmes Concurrents ») - [Rust-101](https://www.ralfj.de/projects/rust-101/main.html), tutoriel pratique (par opposition à théorique) pour débuter en Rust - [Learning Rust With Entirely Too Many Linked Lists](http://cglab.ca/~abeinges/blah/too-many-lists/book/) (« 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](http://blog.guillaume-gomez.fr/Rust), une introduction à Rust en français - [Tutoriel « Rust Error Handling »](http://blog.burntsushi.net/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](http://this-week-in-rust.org/blog/2015/05/18/this-week-in-rust-81/)). N’oubliez pas que vous pouvez venir aux [rencontres Rust](http://www.meetup.com/fr/Rust-Paris/) organisées chaque mois dans les locaux de Mozilla, pour apprendre ou approfondir Rust et discuter autour d’une pizza !

AltStyle によって変換されたページ (->オリジナル) /