Contexte et mise en place du JIT
Le compilateur just‑in‑time (JIT) a été intégré à CPython au début de l’année 2024 pour préparer la version 3.13. Son auteur, Brandt Bucher, a présenté le projet lors d’un sprint de développeurs core et a annoncé son intention de le fusionner sans passer par un PEP standard. Un premier document, le PEP 744, a été publié comme informational afin de décrire le fonctionnement du JIT, mais il ne constituait pas un consensus formel du conseil de pilotage.
Exigences du conseil de pilotage
En juin 2024, le conseil de pilotage a demandé la rédaction d’un PEP standard qui précise les engagements de maintenance, les critères de compatibilité et un calendrier de livraison. Un délai de six mois a été imposé : à défaut d’acceptation, le code du JIT devait être retiré du tronc principal. Le PEP 836, intitulé « JIT Go Brrr », a été soumis le 3 juillet, mais les commentaires ont souligné l’absence de séparation claire entre objectifs de validation et détails d’implémentation, ainsi que le manque d’informations sur la performance, la consommation mémoire et les impacts sécuritaires.
Analyse technique des points de friction
Le conseil a identifié plusieurs risques concrets : impact mémoire potentiellement élevé, parité plateforme incertaine (le JIT ne doit pas dépendre de connaissances spécifiques à un OS), différences de comportement visibles par l’utilisateur qui pourraient casser des scripts s’appuyant sur des idiosyncrasies de l’interpréteur, et lacunes en matière de sécurité nécessitant une revue dédiée. Un jalon de compatibilité était prévu pour le candidat de version 3.17 (prévu en août 2028), avec l’exécution des suites de tests des principaux paquets PyPI afin de détecter d’éventuelles régressions. Aucun indicateur de performance ou de gain mesurable n’a été fourni dans le PEP, ce qui rendait difficile d’évaluer le bénéfice réel du JIT par rapport à des alternatives comme CinderX, Numba ou le compile de PyTorch.
Conséquences et perspectives
Face aux réponses jugées insuffisantes, les mainteneurs du JIT ont retiré le PEP 836, entraînant l’abandon du projet dans la branche principale de CPython. Cette décision illustre la rigueur du processus de gouvernance du langage : toute fonctionnalité majeure doit être accompagnée d’un plan de support clair, d’une évaluation de l’impact sur l’écosystème et d’une validation de sécurité. Pour l’instant, les développeurs Python devront se tourner vers des implémentations externes ou attendre une nouvelle proposition qui répondra aux exigences du conseil.