Aller au contenu

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.

Par Tech AI Wire Team

4 min de lecture

XLinkedIn
Capture d'écran de l'article de Python Insider « Python 3.15.0 (final) is here! », par Hugo van Kemenade, daté du 9 octobre 2026, avec l'illustration de la version 3.15.

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 :

PEPFonctionCe qu'elle fait
810Imports paresseux explicitesPermet au code de retarder le chargement d'un module jusqu'à sa première utilisation, pour un démarrage plus rapide
814frozendictUn dictionnaire intégré qui ne peut plus être modifié après sa création
661Type sentinelleUn type intégré pour des valeurs marqueurs uniques
686UTF-8 par défautPython lit et écrit le texte en UTF-8, sauf indication contraire
798Dépaquetage dans les compréhensionsPermet le dépaquetage à l'intérieur des compréhensions
829Fichiers de démarrage des paquetsDe nouveaux fichiers de configuration de démarrage pour les paquets
799Paquet de profilageAjoute le profileur par échantillonnage Tachyon
803, 820, 793ABI stable free-threadedUne même extension compilée peut fonctionner sur les builds free-threaded
831Pointeurs de frameActivé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 :

PlateformeGain du JIT
Linux x86-647-8 % par rapport à l'interpréteur standard
macOS AArch6411-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 profile est déprécié et sera supprimé dans Python 3.17. cProfile reste.
  • Les lignes qui exécutent du code dans les fichiers .pth sont 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=0 que 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 profile dès maintenant. Il disparaît dans Python 3.17, alors passez à cProfile ou 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

  1. Python 3.15.0 final is here! - Python Insider
  2. Python Release Python 3.15.0 - Python.org
  3. Python 3.15.0 (final) is here! - Discussions on Python.org
  4. What's new in Python 3.15 - Python documentation
  5. Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible

Articles liés