Rust, en bref

Anthony Defranceschi

Cet article qui est le fruit d’une veille technologique était destiné à être présenté à un jury durant les oraux d’un ami. Il a été rédigé en gardant en tête que nous ne devions pas trop nous « étaler » dans nos explications, donc si vous cherchez des exemples, des guides, n’hésitez pas à vous rendre dans les recommandations (en bas de cette ressource).

J’ai jugé bon de réutiliser ce contenu (en le modifiant et corrigeant quelque peu) pour présenter sommairement, mais non sans efficacité, ce que représente, en cette année 2018, le langage Rust mais aussi sa communauté et tout ce qui peut en découler.

Bien entendu, si vous notez une erreur (technique, orthographique…), je vous invite à laisser un message sur cette discussion ou à me contacter directement. Commentez

- Titre : Rust, en bref

- Auteur : Anthony Defranceschi

- Parution : 25 mai 2018

- Mise à jour : 25 mai 2018

- Public visé :

- Licence : Le contenu de cet article est rédigé par Anthony Defranceschi et est mis à disposition selon les termes de la Licence Creative Commons Attribution 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Voir également :

- Rust by example (traduction française)

Sommaire

- I. Introduction

- II. Statistiquement, qu’est-ce que ça donne ?

- III. Rust… Pour quoi faire ?

- IV. Outils embarqués par Rust

- V. Support des IDE

- VI. Remerciements

I - Introduction

Rust est un langage statiquement typé initialement conçu par Graydon Hoare en 2006 dont le développement est désormais soutenu par Mozilla Research.

Ses maîtres mots sont : sécurité, concurrence, rapidité et le doit en partie à son backend LLVM qui offre de nombreux outils destinés à l’optimisation des instructions.

II - Statistiquement, qu’est-ce que ça donne ?

Si nous parlons « chiffre », en (janvier) 2018, Rust, c’est :

- 10 chercheurs (dont une actrice de renom de la communauté Node.js, Ashley Williams) composant la Rust Core Team, chargée de mener à bien les feuilles de route établies à travers les différentes divisions du projet (c.-à-d. langage, compilateur, documentation officielle, outils officiels embarqués)(1) ;

- 75 265 contributions au total ;

- 52 versions en production ;

- 2 027 contributeurs (soit ~800 contributeurs de plus que l’année dernière) ;

- 328 367 738 téléchargements répartis sur 14 394 bibliothèques publiées sur crates.io  ;

- 224 éditions hebdomadaires de This Week in Rust!, soit ~4 ans de diffusion ;

- Plus d’une centaine de bibliothèques proposées par le biais de Crate of the Week ;

- 1863 Pull Request acceptées depuis le 2 janvier 2018, et ~24 000 Pull Request acceptées sur toute la durée du projet, jusqu’ici.

En deux ans, par le biais des RustConf (à Toronto, Portland), entre autres, la communauté n’a cessé de croître.

III - Rust… Pour quoi faire ?

Comme dit plus haut, Rust a été conçu pour être : sécurisé, concurrent et rapide. La philosophie du langage est de fournir au développeur les outils pour écrire des programmes dont l’intégrité est plus difficilement mise en péril (p. ex. mauvaise gestion de la mémoire, de la fermeture des flux) qu’avec un autre langage qui ne se soucie pas forcément de ses problématiques dans sa conception, tout en s’efforçant d’entretenir une rapidité d’exécution redoutable (vélocité comparable à un binaire écrit en C).

En parallèle à cela, son compilateur est capable de détecter des bugs et/ou une mauvaise gestion des ressources avant que le programme ne s’exécute, ou même de diagnostiquer des data race lors de l’écriture de programmes conçus pour le multithread.

Grâce à sa performance, Rust se classe directement comme un « concurrent » direct à C et C++ (bien que les communautés ne soient en réelle « confrontation », au contraire) et peut couvrir les scénarios dans lesquels ces deux derniers sont utilisés le plus souvent. Des exemples :

- Programmation d’un moteur de rendu HTML et CSS pour Firefox : Servo (le futur moteur de rendu web hautement multithread) ;

- Programmation embarquée (e.g. programmation sur Raspberry Pi 3) ;

- Programmation système (p. ex. développement du système d’exploitation Redox) ;

- Programmation de moteurs de jeux (p. ex. Piston) ;

- Programmation de jeux vidéo (p. ex. Hematite, Playform) ;

- Application de bureau (p. ex. imgui) ;

- Application en ligne de commande (p. ex. clap) ;

- Programmation de système de contrôle de version (tel que git) : Pijul ;

- Développement web : Rocket ;

- …

Concernant le web : Rust est amené à être supporté par WebAssembly pour le développement front-end (c.-à-d. appel au DOM, donc conception d’interface plutôt interactive, support de jQuery, Ajax).

IV - Outils embarqués par Rust

L’un des avantages de la stack de Rust est qu’elle n’est pas fragmentée. Tous les outils essentiels dont a besoin un développeur sont centralisés en un seul et même endroit.

Dans sa trousse, le langage dispose d’outils tels que cargo (un gestionnaire de paquets mais aussi, et surtout, un gestionnaire de projets qui permet un agencement modulaire des composants) et rustup (un gestionnaire des toolchains (rustc, cargo, rust-fmt…) pour chaque canal de release (nightly, beta, stable)).

Grâce à leur installation et à la génération rapide de projet, le développeur peut rapidement se mettre au travail avec le strict minimum.

V - Support des IDE

Rust dispose de son propre plugin Visual Studio et peut donc être utilisé avec ce dernier comme n’importe quel projet C#, F#, C++, ou autre langage supporté par la plateforme. Il existe également un plugin pour les environnements intégrés de Jetbrains : IntelliJ Rust.

VI - Remerciements

Je tiens à remercier f-leb pour la relecture orthographique de ce tutoriel.

(1)La Rust Core Team n’est toutefois pas la seule équipe à intervenir dans chacune de ces divisions.