Nouveau solveur de traits
Le projet next generation trait solver représente une réécriture majeure d’une partie du système de types de rustc. Après près de dix ans de recherche, il corrige plusieurs bugs de soundness et débloque des fonctionnalités auparavant bloquées, comme certaines limites de impl Trait et des problèmes d’asynchronisme. En éliminant la dette technique liée à l’ancien solveur, il libère des développeurs qui peuvent désormais se concentrer sur de nouvelles extensions du langage.
Polonius, nouveau vérificateur d'emprunts
Polonius constitue une implémentation alternative du borrow checker. Son objectif est d’accepter davantage de programmes valides, notamment en ouvrant la voie à des références internes futures. Bien que son impact sur le temps de compilation soit moindre que celui du solveur de traits, il reste un pas important vers une analyse d’emprunt plus précise, en s’appuyant sur un modèle de contraintes logiques plutôt que sur l’algorithme de flux de données traditionnel.
Optimisations de performance du compilateur
Plusieurs axes d’amélioration se sont concrétisés en 2026. La phase frontend parallèle, relancée par le contributeur @SparrowLi et dirigée par @petrochenkov, approche la stabilisation après avoir résolu de nombreux blocages de conception. Cette parallélisation du parsing et de la résolution de noms vise à réduire le temps de compilation sur les machines multicœurs.
Du côté du backend, LLVM 23 a apporté un gain de performance notable. Contrairement aux versions précédentes où les mises à jour LLVM pouvaient introduire des régressions (ex. LLVM 10 avec -10 % de performance), LLVM 23 montre une amélioration globale tant sur les métriques d’instructions comptées que sur le temps d’exécution, grâce à de nouvelles optimisations internes et à un suivi plus strict des régressions.
Des micro‑optimisations continues ont également été intégrées : des passes MIR telles que move elimination éliminent des copies que LLVM ne parvient pas à optimiser, accélérant à la fois la compilation et le code généré. Cette passe exploite la connaissance du compilateur Rust sur les mouvements de valeurs, ce qui est pertinent puisque Rust produit plus de mouvements que les langages C/C++ ciblés par LLVM.
Enfin, l’expérimentation de la polymorphisation s’inspire du mécanisme utilisé par Swift. L’idée est de réduire le nombre de monomorphisations redondantes, limitant ainsi le temps de compilation sans impacter le code exécutable. Bien que toujours en phase d’expérimentation, les premiers résultats suggèrent une diminution du temps de génération de code pour les bibliothèques fortement génériques.
Ces avancées s’appuient sur une meilleure coordination entre les équipes de performance et les responsables de fusion, comme le montre le lien entre les opérations d’arbre de syntaxe et le triage des régressions. Cette approche réduit le délai de réaction face aux régressions et oriente les regroupements de pull‑requests en fonction de leur impact mesuré.