BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Rust après la 1.0 : Etat des lieux et Futures Directions

Rust après la 1.0 : Etat des lieux et Futures Directions

À l'heure de la release de Rust 1.0, Niko Matsakis, chercheur chez Mozilla, a établi un inventaire initial des priorités pour les nouvelles fonctionnalités à ajouter au langage dans le futur. L’intention est d’initier une discussion publique au sujet de la direction que devrait prendre le langage. InfoQ s’est entretenu avec Niko Matsakis à ce sujet.

La liste de Niko est constituée de trois groupes de fonctionnalités, assemblées par priorité, d’une part au regard de leur sensibilité au délai, c'est-à-dire par rapport à la difficulté de les ajouter le temps passant, et, d’autre part, par rapport à leur impact global sur la communauté des développeurs Rust ou à l’envergure des problèmes qu’une fonctionnalité peut résoudre.

Les éléments les plus prioritaires listés par Niko Matsakis sont :

  • La stabilisation des API des librairies, par exemple les API du système de fichiers et les API d’allocation mémoire.
  • Un meilleur support de Windows et d’ARM, ce qui revient à dire de supprimer la dépendance de Rust vers MinGW et supporter ARM64.
  • Une compilation plus rapide.
  • Un meilleur outillage.
  • Faire que les Allocators et le Tracing fournissent plus de contrôle sur l’allocation mémoire.
  • La spécialisation qui permet de définir plusieurs implémentations d’un trait donné pour un ensemble de types donné.
  • Des struct virtuelles permettant une forme d’héritage entre les structs.

D’après Niko Matsakis, d’autres fonctionnalités pourraient passer parmi les plus prioritaires, par exemple l’amélioration des macros et de l’extension de la syntaxe. InfoQ a eu la chance de parler avec Niko pour en savoir plus au sujet de Rust et de son futur (Interview réalisée en amont de la release de Rust 1.0).

Maintenant que Rust 1.0 est presque là, quelles sont tes impressions à son sujet ? Penses-tu que le langage a atteint un bon niveau de maturité ?

Une des choses qui me rend confiant dans le fait que Rust est prêt pour la release 1.0 est la croissance de la communauté et de l’écosystème. Il existe déjà presque 2 000 entrées dans le repository crate.io et Rust commence à être utilisé sur de gros projets (le compilateur Rust lui-même, Servo et Skylight).

La conception actuelle de Rust est le résultat d’un bon nombre d’itérations et je pense que cela a été payant. Mais la release 1.0 a beau être une étape excitante, je pense que ce n’est que le début. Nous avons beaucoup d’améliorations prévues et j’ai hâte de les voir prendre forme.

Je suis particulièrement ravi de la direction prise, du fait que cela ait été fait de façon ouverte, publique. Avoir un groupe de contributeurs aussi important a vraiment aidé à améliorer la conception et l’implémentation de Rust. Et je pense que cela sera au moins autant le cas après la 1.0.

Rust a attiré l’attention grâce à son support de beaucoup des concepts des langages de programmation modernes, tels que les types option, les génériques, l’inférence de type, etc, bien que celui-ci soit plutôt bas-niveau. Pourrais-tu nous parler de l’importance de ces concepts dans le cadre de la programmation bas-niveau ?

Pour les cas où la performance compte réellement, avoir un contrôle bas-niveau de la machine est un avantage réel. Mais à l’heure actuelle, cela se paie généralement cher en termes de productivité. Nous nous sommes toujours attendus à ce que Rust séduise les développeurs C++, ce que nous n’avions pas réalisé, c’est combien cela allait aussi marcher sur les développeurs venant des langages haut-niveau.

Le système de type est la clef : le système de type de Rust permet d’appliquer des patterns de façon sûre, par exemple ce que l’on appelle ownership et borrowing, qui permettent d’éviter les crashs et rendent la programmation bas-niveau plus rapide et plus facile. Ceci veut aussi dire qu’il n’est pas nécessaire d’être un expert en programmation système pour déployer une application Rust en production ou écrire une librairie pour crates.io. Du point de vue purement langage, ce que nous avons fait, c’est combiner les très bonnes idées des langages modernes et nous les avons portées vers la programmation système. Mais le bénéfice net à y voir, c’est une programmation bas-niveau sans crashs et sans douleur.

Au delà des priorités, pourrais-tu nous dire quelle est pour toi la direction que prend Rust ? Quels sont les types de fonctionnalités que l’on doit s’attendre à voir apparaître dans le futur ?

L’objectif de Rust a toujours été de réunir contrôle du bas-niveau et expressivité du haut-niveau, sans compromettre aucun de ces aspects. Concernant le langage lui-même, j’anticipe que nous allons continuer dans les deux directions simultanément.

Ceci implique qu’il-y-aura davantage de fonctionnalités bas-niveau, des allocators custom par exemple, mais aussi plus de choses pour l’expressivité haut-niveau, je pense au support de la métaprogrammation par exemple. Au-delà du langage, je pense que nous allons voir se développer beaucoup d’outils et d’infrastructure.

Mais finalement, ce qui changera le plus Rust, c’est sans aucun doute l’afflux important des utilisateurs et de la communauté qu’amènera la stabilité. Je suis confiant dans le fait que ces nouveaux utilisateurs vont amener beaucoup d’excellentes idées auxquelles nous n’avons même pas encore pensé.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT