31 octobre 2018

Focus sur Rust : La nouvelle techno de Firefox

Rust a démarré comme un projet de recherche Mozilla en partie destiné à remettre en œuvre certaines composantes clés de Firefox. Les fonctionnalités natives de Rust peuvent se comparer favorablement à celles d’un langage comme C++.

L’un des objectifs est d’ailleurs d’encourager les développeurs C et C++ à utiliser Rust plutôt que leurs outils habituels lorsque c’est possible. Du côté de la rapidité, le code Rust est compilé en code machine à travers différentes plateformes. Les fichiers binaires sont autonomes. Ils fonctionnent sans runtime et le code généré est conçu pour s’exécuter aussi bien que du code écrit en C ou C++.

Du côté de la sécurité : Rust ne compilera pas les programmes qui cherchent à faire un usage non sécurisé de la mémoire. La syntaxe de Rust et ses métaphores de langage font en sorte que les problèmes de mémoire couramment rencontrés dans d’autres langages n’entrent jamais en production. Le compilateur les repère et contraint de les corriger avant tout fonctionnement du programme.

Rust contrôle la gestion de la mémoire à travers des règles strictes. Le système qui le gère est représenté dans la syntaxe du langage par une métaphore dénommée ownership (propriété). Toute valeur donnée peut être « owned » (détenue) par une seule variable à la fois. La façon dont cette propriété est transférée entre les objets est strictement gouvernée par le compilateur de façon à ce qu’il n’y ait aucune mauvaise surprise avec le runtime sous la forme d’erreurs d’allocation de mémoire. Cette approche signifie également qu’il n’y a pas de récupération de mémoire (garbage collector) comme avec des langages comme Go ou C#.
Il est conçu pour être cross-platform et sa bibliothèque standard ne contient que des éléments qui peuvent être portés de façon fiable entre les plateformes.