1 points par GN⁺ 2026-03-18 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Le compilateur JIT de CPython a atteint des performances 11 à 12 % plus rapides sur macOS AArch64 et 5 à 6 % sur Linux x86_64, atteignant son objectif plus tôt que prévu
  • Dans les versions 3.13 à 3.14, le JIT était plus lent que l’interpréteur, mais les performances se sont nettement améliorées grâce à un développement piloté par la communauté et à des améliorations structurelles
  • Des essais expérimentaux comme le trace recording et l’élimination du comptage de références (reference count elimination) ont constitué des points de bascule majeurs
  • Des contributeurs clés comme Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher ainsi que de nombreux nouveaux participants ont collaboré
  • Ce résultat montre que le développement mené par la communauté et une culture de collaboration peuvent avoir un effet concret sur l’amélioration des performances dans l’open source

État des progrès des performances du JIT de CPython

  • Sur macOS AArch64, les performances sont 11 à 12 % plus rapides, et sur Linux x86_64 5 à 6 % plus rapides
    • Les mesures sont basées sur la moyenne géométrique, et selon les benchmarks les résultats vont de 20 % plus lent à plus de 100 % plus rapide
    • La prise en charge du free-threading n’est pas encore terminée, avec un objectif pour les versions 3.15/3.16
  • Dans les versions 3.13 à 3.14, le JIT était plus lent que l’interpréteur, mais cette version obtient une amélioration de vitesse significative

Un développement du JIT centré sur la communauté

  • Après l’arrêt du principal financement de l’équipe Faster CPython en 2025, le projet est passé à un modèle de développement piloté par la communauté
    • Objectif : +5 % en 3.15, +10 % en 3.16, ainsi que la prise en charge du free-threading
    • Pour réduire le bus factor, chaque étape (front-end, middle-end, back-end) compte au moins deux mainteneurs
  • Les problèmes complexes ont été découpés pour encourager la participation de nouveaux contributeurs
    • Brandt Bucher a séparé les tâches via des « mega-issues »
    • 11 contributeurs ont transformé les instructions de l’interpréteur pour les rendre plus favorables aux optimisations du JIT
  • Une culture d’encouragement des contributions et de partage des réussites a aidé à maintenir la participation
    • Résultat : les performances sur Linux x86_64 sont passées de 1 % à 3~4 % d’amélioration

Principaux tournants techniques

Trace recording

  • Lors du sprint cœur de CPython, transition vers un front-end basé sur le tracing
    • Au départ, c’était 6 % plus lent, mais l’introduction d’une architecture dual dispatch a amélioré les performances
    • Cela a permis de préserver la vitesse de l’interpréteur de base tout en limitant l’augmentation de sa taille
  • L’introduction du trace recording a entraîné une hausse de 50 % de la couverture du code JIT, améliorant ensuite l’efficacité des optimisations

Élimination du comptage de références

  • Inspirée des travaux d’optimisation du bytecode de Matt Page
    • La suppression des branches provoquées par la décrémentation du comptage de références a amélioré les performances
    • Même la suppression d’une seule branche a montré un effet de réduction du coût cumulé
  • La technique se parallélise facilement et a été utilisée pour former de nouveaux contributeurs comme exercice d’apprentissage de l’architecture du JIT

Infrastructure et composition de l’équipe

  • Savannah Ostrowski exploite une infrastructure de mesure des performances du JIT avec quatre machines
    • Les résultats d’exécution quotidiens du JIT permettent de détecter tôt les régressions de performance
  • Diego Russo s’est chargé du JIT pour le matériel ARM et de l’amélioration de la compatibilité avec le profiler
  • Brandt Bucher a posé les bases du back-end de code machine, réduisant la barrière d’entrée pour les nouveaux contributeurs

Collaboration et partage des connaissances

  • Les conseils de CF Bolz-Tereick à propos de PyPy ont amélioré la compréhension de la conception du JIT
  • Les échanges avec des experts des compilateurs comme Max Bernstein ont apporté une motivation continue et une progression technique
  • L’expérience acquise en analysant le code de PyPy a contribué à améliorer la qualité du JIT de CPython

Conclusion

  • Le JIT de Python 3.15 est le résultat combiné de la collaboration communautaire, des expérimentations techniques et de l’amélioration de l’infrastructure
  • Il démontre que les personnes, la chance et une culture de collaboration sont les moteurs essentiels de l’innovation en performance dans l’open source

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.