Un compilateur JIT pour Python 3.13

Par:
fredericmazue

jeu, 11/01/2024 - 13:48

Brandt Bucher, développeur principal de CPython, a soumis une proposition (pull-request) dans la banche Python 3.13. Il s'agit d'ajoindre un compilateur JIT à l'interpréteur de CPython.

Ce compilateur JIT ne traduira pas le code Python en code machine, mais s'appuiera sur la technologie Copy-and-Patch Compilation, proposée en 2021 par les chercheurs Haoran Xu et Fredrik Kjolstad de l'Université de Stanford. Il s'agit d'un algorithme de compilation rapide pour les langages de haut niveau et le code-byte. Les chercheurs expliquent que l’idée est d’assembler du code à partir d’une grande bibliothèque de variantes d’implémentation binaires que l'on peut qualifier de générales. Voilà pour le 'Copy'. Ces implémentations binaires reçoivent le nom de pochoirs en raison du fait qu'elle comportent des 'trous.' Les trous sont ensuite comblés par l'adjonction des éléments qui feront fonctionner le code pour son cas particulier. Voilà pour le 'Patch'. Ce fonctionnement est expliqué plus en détails par exemple dans ce très intéressant billet de blog.

Quels bénéfices peut-on attendre de l'arrivée de ce JIT pour Python ? Brandt Bucher répond à cette question en se basant sur ses travaux préliminaires : Dans l'état actuel des choses, il est entre 2 % et 9 % plus rapide que l'interprète de niveau deux, selon la plate-forme (les références individuelles varient considérablement, de 13 % plus lentes à 47 % plus rapides).

Au départ, vu son côté très expérimental, ce compilateur ne sera bien sûr pas activé par défaut. Pour l'essayer il faudra compiler spécialement un CPython à partir des sources, en donnant le drapeau --enable-experimental-jit au script de configuration de la compilation.