Python 3.15.0 sort avec les imports paresseux et frozendict
Python 3.15.0 est arrivé le 9 octobre avec 5 643 commits de 1 012 contributeurs : imports paresseux, un frozendict intégré, UTF-8 par défaut et un JIT plus rapide.
4 min de lecture

En chiffres
- commits since Python 3.14
- 5,643
- contributors to the release
- 1,012
- JIT speedup on x86-64 Linux, geometric mean
- 7-8%
- roughly when security updates end, per PEP 602
- 2031
Python 3.15.0 est sorti le 9 octobre 2026. C'est la version annuelle de nouvelles fonctions du langage. Elle apporte des imports paresseux explicites, un type frozendict intégré et UTF-8 comme encodage de texte par défaut. « Python 3.15.0 est la plus récente version majeure du langage de programmation Python », a écrit le responsable des versions Hugo van Kemenade sur Python Insider. La version compte 5 643 commits de 1 012 contributeurs. Elle arrive une semaine plus tard que prévu au départ, après une troisième version candidate surprise qui a corrigé des bugs tardifs des imports paresseux.
Les fonctions phares
Chaque grand changement vient d'une PEP, une Python Enhancement Proposal (proposition d'amélioration de Python), le document de conception d'une fonction. Les notes de version listent celles-ci :
| PEP | Fonction | Ce qu'elle fait |
|---|---|---|
| 810 | Imports paresseux explicites | Permet au code de retarder le chargement d'un module jusqu'à sa première utilisation, pour un démarrage plus rapide |
| 814 | frozendict | Un dictionnaire intégré qui ne peut plus être modifié après sa création |
| 661 | Type sentinelle | Un type intégré pour des valeurs marqueurs uniques |
| 686 | UTF-8 par défaut | Python lit et écrit le texte en UTF-8, sauf indication contraire |
| 798 | Dépaquetage dans les compréhensions | Permet le dépaquetage à l'intérieur des compréhensions |
| 829 | Fichiers de démarrage des paquets | De nouveaux fichiers de configuration de démarrage pour les paquets |
| 799 | Paquet de profilage | Ajoute le profileur par échantillonnage Tachyon |
| 803, 820, 793 | ABI stable free-threaded | Une même extension compilée peut fonctionner sur les builds free-threaded |
| 831 | Pointeurs de frame | Activés par défaut dans les builds |
Le typage reçoit aussi trois changements : les PEP 728, 747 et 800. Le compilateur JIT expérimental, les messages d'erreur et les couleurs de la ligne de commande ont aussi été améliorés, selon la page What's New.
Le passage à UTF-8 compte surtout sous Windows, selon Linux Compatible. Le code qui s'appuyait sur l'ancien encodage par défaut peut y revenir avec PYTHONUTF8=0.
Plus rapide, mais pas partout
Le JIT est un compilateur qui transforme le code Python le plus sollicité en code machine pendant son exécution. Il est désormais plus rapide. Python Insider donne ces gains en moyenne géométrique :
| Plateforme | Gain du JIT |
|---|---|
| Linux x86-64 | 7-8 % par rapport à l'interpréteur standard |
| macOS AArch64 | 11-12 % par rapport à l'interpréteur à appels terminaux (tail-calling) |
Les résultats varient fortement selon la charge de travail. Les benchmarks individuels vont d'environ 15 % plus lent à plus de 100 % plus rapide, selon Linux Compatible.
Les installeurs officiels ont aussi changé. Les builds Windows 64 bits utilisent désormais l'interpréteur à appels terminaux, une façon plus rapide d'exécuter la boucle principale de Python. Linux Compatible estime ce gain à 15-20 %, et jusqu'à 40 % pour les petits scripts en pur Python qui tournent longtemps. Les installeurs macOS officiels incluent désormais par défaut la prise en charge du free-threading. Le free-threading permet à Python d'exécuter du code sur plusieurs cœurs de processeur à la fois, sans le verrou global de l'interpréteur.
Problème connu sur macOS 27
Un avertissement concerne les utilisateurs de Mac. Sous macOS 27.0, IDLE et d'autres applications tkinter « peuvent se figer lors de l'utilisation d'une commande de menu d'une application qui ouvre une boîte de dialogue », indique Python Insider. Il faut alors forcer l'application à quitter.
L'équipe Python attribue le problème à un changement du système d'exploitation. Elle pense qu'il touche toutes les versions de Tk, la boîte à outils qu'utilise tkinter. Il est suivi sous le ticket #158053. La page de la version conseille d'attendre avant de passer à macOS 27.0 si vous dépendez d'applications Tk.
Ce qui est déprécié
Trois éléments sont en voie de disparition, selon les notes de version et Linux Compatible :
- Le module en pur Python
profileest déprécié et sera supprimé dans Python 3.17.cProfilereste. - Les lignes qui exécutent du code dans les fichiers
.pthsont dépréciées au profit des nouveaux fichiers de démarrage de la PEP 829. - Les fonctions C
PyGILState_*sont dépréciées en douceur (soft-deprecated), mais pas supprimées.
Python 3.15 reçoit deux ans de corrections de bugs, puis des correctifs de sécurité jusqu'à octobre 2031 environ, selon Linux Compatible, conformément au calendrier de la PEP 602.
Ce que cela signifie pour les développeurs
- Essayez les imports paresseux sur les outils lents à démarrer. Les outils en ligne de commande et les applications aux imports lourds en profitent le plus. Testez tout module qui dépend de code exécuté au moment de l'import. Différer l'import change le moment où ce code s'exécute.
- Vérifiez la gestion du texte sous Windows. UTF-8 est désormais l'encodage par défaut. Lancez vos tests d'entrée et de sortie de fichiers sous Windows, et n'utilisez
PYTHONUTF8=0que comme solution temporaire. - Utilisez frozendict pour les réglages fixes. Un dictionnaire non modifiable est plus sûr pour la configuration et peut servir là où une valeur hachable est nécessaire.
- Faites des benchmarks avant de compter sur le JIT. Les gains moyens sont modestes, et certaines charges de travail ralentissent. Mesurez votre propre code.
- Attendez avant de passer à macOS 27.0 si vous utilisez tkinter. IDLE et les applications Tk peuvent se figer jusqu'à la correction du bug.
- Abandonnez
profiledès maintenant. Il disparaît dans Python 3.17, alors passez àcProfileou au nouveau paquet de profilage.
Avant de mettre à niveau vos systèmes de production, vérifiez que vos dépendances clés prennent en charge la 3.15.
Sources
- Python 3.15.0 final is here! - Python Insider
- Python Release Python 3.15.0 - Python.org
- Python 3.15.0 (final) is here! - Discussions on Python.org
- What's new in Python 3.15 - Python documentation
- Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible
Articles liés

Python 3.15.0 final repoussé au 9 octobre après une rc3 surprise
Python 3.15.0rc3 est sorti le 2 octobre pour corriger des bugs tardifs des imports paresseux, ce qui repousse d'une semaine la version finale de Python 3.15.0, au 9 octobre 2026.

Python 3.10 arrive en fin de vie, cinq versions corrigent 8 CVE
Python 3.10.22 est la dernière version de la branche 3.10 : elle a atteint sa fin de vie le 1er octobre 2026, tandis que 3.11 à 3.14 recevaient des correctifs pour jusqu'à huit CVE.

Le Python Language Summit 2026 débat de Rust et d'un nouveau GC
Les comptes rendus du Python Language Summit 2026 sont en ligne : 47 développeurs du cœur ont débattu de Rust dans CPython, d'un nouveau ramasse-miettes, d'un espace std et du démarrage.