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.)

Sources