6 points par darjeeling 2025-07-05 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Retour d’expérience honnête et analyse d’un développeur ayant participé pendant plus de deux ans au développement du compilateur JIT (Just-In-Time) de CPython.
Ce texte partage l’état actuel du projet du compilateur JIT de CPython, en particulier du côté de l’optimisation, à partir de l’expérience accumulée ces deux à trois dernières années par un développeur qui y a contribué de manière essentielle.
Les points positifs : croissance portée par la communauté et transmission

  • Construction d’une communauté : au départ, seul un petit nombre de développeurs faisait avancer le projet, mais aujourd’hui il fonctionne de manière communautaire, malgré la dissolution de l’équipe Faster CPython de Microsoft. De nouveaux contributeurs clés comme Savannah, Tomáš et Diego ont rejoint l’effort, dans le cadre d’une démarche intentionnelle visant à assurer la pérennité du projet JIT sur le long terme.
  • Un JIT facile à apprendre : le JIT a été conçu pour permettre à de nouveaux contributeurs, même sans expertise approfondie en compilateurs, d’apprendre rapidement et de contribuer. Par exemple, l’adoption d’une approche de type tracing JIT a permis de réduire la barrière à l’entrée, car elle peut se comprendre à partir de l’analyse statique d’un seul bloc de base, plutôt qu’à travers un graphe complet de flux de contrôle bien plus complexe.
    Les déceptions : performances et couverture médiatique erronée
  • Problèmes de performances : pour être franc, le JIT de CPython 3.13 est lent. Lorsqu’il est compilé avec un compilateur récent (Clang 20), il est souvent plus lent que l’interpréteur ; ce n’est qu’en utilisant un compilateur plus ancien (GCC 11) qu’il atteint enfin des performances comparables. La version 3.14, elle aussi, s’est surtout concentrée sur la formation de nouveaux contributeurs et sur l’extension de l’analyse de types existante, si bien qu’elle n’a pas apporté d’amélioration spectaculaire des performances. L’auteur estime que privilégier la montée en compétence sur le long terme était un meilleur choix que de viser des gains immédiats.
  • Une couverture médiatique inexacte : au début, la presse a rapporté que le JIT était « 2 à 9 % plus rapide » que l’interpréteur, mais ce n’était pas exact. Ce chiffre provenait d’une comparaison non pas avec le véritable interpréteur CPython, mais avec un très lent « interpréteur de niveau 2 » exécutant la représentation intermédiaire (IR) du JIT. Cela a créé chez les utilisateurs des attentes erronées vis-à-vis du JIT, et comme beaucoup ont en réalité constaté une baisse de performances, l’auteur dit en avoir ressenti une grande frustration.
    Conclusion et perspectives
    L’auteur reste néanmoins optimiste au sujet du JIT. Une communauté solide s’est formée, et plusieurs travaux d’optimisation sont actuellement menés en parallèle. Il s’attend à ce que ces efforts apportent, dans la version 3.14, un gain de vitesse de quelques points de pourcentage en moyenne géométrique sur les benchmarks.
    L’auteur conclut sur une note positive en affirmant que « s’il y avait eu un problème vraiment “ugly”, je n’aurais plus travaillé sur le JIT », et que grâce à la force de la communauté, le JIT continuera de progresser.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.