Ajout d’un compilateur JIT à Python 3.13
- Brandt Bucher, développeur du cœur de CPython, a soumis une pull request pour ajouter un compilateur JIT à la branche Python 3.13.
- Ce changement devrait constituer l’une des plus grandes évolutions de l’interpréteur CPython depuis l’ajout de l’interpréteur adaptatif spécialisé dans Python 3.11.
Qu’est-ce que le JIT ?
- La compilation JIT (Just in Time) désigne une architecture dans laquelle la compilation a lieu lors de la première exécution du code.
- Un compilateur JIT est un compilateur qui génère du code machine, par opposition à un compilateur AOT (Ahead of Time).
- Le code Python est d’abord compilé en bytecode, mais ce bytecode n’a pas de signification directe pour le CPU et s’exécute via une boucle d’interpréteur de bytecode spécialisée.
Qu’est-ce qu’un copy-and-patch JIT ?
- Le copy-and-patch JIT est un concept proposé en 2021, conçu comme un algorithme rapide pour les runtimes de langages dynamiques.
- L’idée du copy-and-patch JIT consiste à copier les instructions correspondant à chaque opération puis à remplir (patcher) les arguments du bytecode.
Avantages et inconvénients du copy-and-patch JIT
- Alors qu’un compilateur JIT « complet » compile du bytecode de haut niveau vers des instructions de bas niveau d’un langage intermédiaire (IL), le copy-and-patch JIT effectue la compilation du bytecode vers le code machine à l’aide d’un ensemble de templates.
- Le copy-and-patch JIT évite d’avoir à exécuter une architecture de compilateur JIT complexe dans le runtime Python lui-même ; il suffit d’installer les outils JIT de LLVM sur la machine qui compile CPython depuis les sources.
Comment ce JIT fonctionne-t-il ?
- Il étend une API nouvellement ajoutée à Python 3.13 afin que des optimiseurs enfichables puissent être détectés à l’exécution.
- Le nouveau JIT est un optimiseur optionnel pour cette nouvelle architecture.
- Lors de la compilation de CPython depuis les sources, fournir le flag
--enable-experimental-jit permet de générer des templates de code machine pour le bytecode Python.
Ce JIT est-il plus rapide ?
- Les premiers benchmarks montrent un gain de performances d’environ 2 à 9 %.
- Ce JIT constitue une pierre angulaire pour une série d’optimisations susceptibles d’améliorer nettement les performances de Python.
L’avis de GN⁺
- Le compilateur JIT ajouté à Python 3.13 représente une évolution importante pour améliorer la vitesse d’exécution de Python, notamment en augmentant l’efficacité sur les tâches répétitives.
- Le copy-and-patch JIT propose une approche innovante pour améliorer les performances sans devoir intégrer une architecture JIT complexe dans le runtime Python de l’utilisateur.
- Cette technologie devrait alimenter des discussions passionnantes dans la communauté Python et ouvrir de nouvelles perspectives pour l’optimisation des performances de Python.
1 commentaires
Avis Hacker News