Le compilateur JIT dans Python 3.14
Python 3.14 inclut un compilateur JIT expérimental dans les binaires officiels. Basé sur la technique copy-and-patch, il compile à la volée les bytecodes les plus exécutés en code machine natif, sans nécessiter LLVM à l'exécution.
Comment l'activer
Le JIT est désactivé par défaut. On l'active avec la variable d'environnement PYTHON_JIT=1 ou l'option -X jit.
python
# Activation du JIT
# $ PYTHON_JIT=1 python mon_script.py
# ou
# $ python -X jit mon_script.py
import sys
# Vérifier si le JIT est disponible dans le build
jit_available = hasattr(sys, '_jit')
print(f"JIT disponible : {jit_available}")
# Le JIT cible les boucles chaudes et fonctions
# fréquemment appelées. Il est transparent :
# aucune modification du code source n'est nécessaire.
Quel code en bénéficie ?
Le JIT accélère principalement les boucles serrées et le code numérique pur Python. Les gains typiques sont de 5 à 15 % sur les benchmarks généraux, davantage sur du calcul intensif. Il ne remplace pas PyPy pour les gains massifs, mais il fonctionne avec l'écosystème C complet (NumPy, etc.).
python
import time
def fibonacci(n: int) -> int:
"""Calcul itératif de Fibonacci."""
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
def benchmark():
start = time.perf_counter()
for _ in range(1000):
fibonacci(10_000)
elapsed = time.perf_counter() - start
return elapsed
# Résultats typiques sur Python 3.14 :
t = benchmark()
print(f"Durée : {t:.3f}s")
# Sans JIT : ~2.1s
# Avec JIT : ~1.8s (~15% plus rapide)
# PyPy : ~0.3s (PyPy reste plus rapide pour le pur Python)
# Avantage du JIT CPython : compatibilité totale
# avec les extensions C (NumPy, Pandas, etc.)
