Bilan des améliorations récentes
Entre le 29 juillet et le 28 septembre 2026, le benchmark officiel du compilateur Rust a enregistré une réduction moyenne du temps d’exécution de 4,57 % sur 629 mesures. Parmi celles‑ci, 555 se sont améliorées tandis que 74 ont régressé, ce qui crée ce que l’auteur qualifie de « sea of green ». Cette progression résulte d’une série de PRs ciblées, chacune apportant des gains mesurables sur des sous‑systèmes précis.
Optimisations du compilateur
Le passage à LLVM 23 (PR #158734) a généré une amélioration moyenne de 1,2 % du temps mur, un gain notable pour une mise à jour de chaîne d’outils. L’activation du profile‑guided optimisation (PGO) pour Clippy (PR #159642) a produit des réductions allant jusqu’à 18 % sur les benchmarks de cet outil d’analyse statique.
Le nouveau vérificateur d’emprunts, Polonius Alpha, introduit sur Nightly, accepte davantage de programmes mais augmente le coût de compilation dans certains cas. Deux PRs de Jack Huey (#161938 et #163027) ont limité cet impact : la première a réduit le nombre d’instructions de 3‑5 % pour le crate serde, la seconde a apporté des diminutions inférieures à 1 % sur de nombreux benchmarks grâce à un ajustement de structure de données et d’inlining.
Travaux ciblés et gains spécifiques
Le contributeur xmakro a publié plusieurs améliorations : le PR #157281 a baissé le nombre moyen de cycles de 1,58 %, le PR #158059 a atteint une réduction maximale de 6 % des instructions, et le PR #160473 a limité les allocations dans un chemin critique, gagnant jusqu’à 2 %. Un autre changement (#160268) a remplacé le dispatch dynamique par du dispatch statique dans le sélecteur de solveur de traits, entraînant des baisses inférieures à 1 % du comptage d’instructions.
La refonte de l’algorithme de traversée du graphe de contrôle (CFG) pour les analyses de flux de données (PR #160193) a réduit le nombre d’appels à apply_effects_in_block de 1,5 million à 90 000 pour le crate cranelift-codegen. Ce raccourci a produit une réduction de ~30 % du temps mur lors d’une compilation de vérification.
Limites et perspectives
Malgré les gains, certaines améliorations introduisent des régressions marginales, notamment le nouveau solveur de traits qui reste plus lent sur des cas isolés. Le PR #160535 a augmenté la taille de pile par défaut, supprimant le mécanisme ensure_sufficient_stack et offrant une réduction maximale de près de 3 % des instructions, mais soulève des questions de gestion de la mémoire dans des scénarios de récursivité profonde.
Le processus de « rollup » (PRs #162859, #162747) montre que la capacité d’intégration continue reste un goulot d’étranglement : regrouper plusieurs PRs améliore le débit de mise en production, mais nécessite des mesures post‑merge pour garantir l’absence d’effets indésirables. La communauté continue d’explorer des optimisations du solveur de traits, du vérificateur d’emprunts et de l’infrastructure LLVM afin de transformer les régressions actuelles en nouvelles améliorations mesurables.