Date de sortie : 7 octobre 2024
Documentation officielle : https://docs.python.org/3/whatsnew/3.13.html
Python 3.13 marque un tournant avec des changements structurels majeurs : un mode sans GIL, un compilateur JIT expérimental, et un REPL modernisé. Voyons ce que cette version apporte de concret.

Les nouveautés principales
Nouveau REPL interactif
Le REPL fait peau neuve avec des fonctionnalités attendues depuis longtemps :
- Édition multi-ligne fluide avec historique préservé
- Couleurs dans les prompts et tracebacks (enfin !)
- Raccourcis pratiques : F1 (aide), F2 (historique), F3 (mode paste)
- Plus besoin de parenthèses pour exit, quit, help
>>> def hello(
... name
... ):
... print(f"Hello {name}")
...
>>> hello("World")
Hello World
Mode free-threaded (expérimental)
C’est LE grand changement : Python sans le GIL. Du vrai parallélisme sur multi-cœur devient enfin possible :
# Utiliser l'exécutable free-threaded python3.13t script.py # Vérifier le support python -c "import sys; print(sys._is_gil_enabled())"
Activer/désactiver via PYTHON_GIL=0 ou -X gil=0.
Compilateur JIT (expérimental)
Un premier pas vers l’optimisation JIT. Les gains de performance viendront dans les versions futures, mais l’infrastructure est en place :
# Build avec JIT activé ./configure --enable-experimental-jit PYTHON_JIT=1 python script.p
Messages d’erreur encore meilleurs
Python continue d’améliorer son ergonomie de développement. Couleurs activées par défaut et suggestions plus intelligentes :
>>> "hello".split(max_split=1) TypeError: split() got an unexpected keyword argument 'max_split'. Did you mean 'maxsplit'?
Détection des conflits de noms avec les modules stdlib.
Support mobile officiel
Python débarque officiellement sur mobile (même si le support reste en Tier 3 pour l’instant) :
- iOS : arm64-apple-ios
- Android : aarch64-linux-android
copy.replace() — copies modifiées
Une nouvelle fonction bien pratique pour créer des copies avec modifications (type dataclass, namedtuple, etc.) :
from copy import replace
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(1, 2)
p2 = replace(p, x=10) # Point(x=10, y=2)
Typing : valeurs par défaut pour TypeVar
from typing import TypeVar
T = TypeVar('T', default=int)
def process[T = str](x: T) -> T:
return x
typing.ReadOnly pour TypedDict
from typing import TypedDict, ReadOnly
class Config(TypedDict):
name: str
version: ReadOnly[str] # Ne peut pas être modifié
Suppression des “dead batteries”
Grand ménage de printemps : 19 modules legacy font leurs adieux. Si vous utilisez encore telnetlib ou cgi, il est temps de migrer.
Modules supprimés : cgi, telnetlib, aifc, audioop, chunk, crypt, imghdr, mailcap, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, uu, xdrlib, lib2to3, 2to3.
Autres améliorations notables
En vrac, quelques ajouts sympathiques :
- dbm.sqlite3 devient le backend par défaut (plus fiable que les anciens)
- Module random utilisable en ligne de commande
- Encodage Z85 disponible dans base64
- Cycle de support rallongé : 2 ans de développement actif + 3 ans de correctifs sécurité (au lieu de 1.5 + 3.5)
Échanger avec un expert Python
Nous revenons vers vous sous 24h.
Chez Makersquad, nous mettons notre expertise Python au service de projets ambitieux et durables. Que ce soit pour le développement d’applications web, la conception d’API, l’automatisation de processus, la data ou l’optimisation de performances, nous accompagnons nos clients à chaque étape. Si vous avez un besoin en Python, un nouveau projet, une refonte, un audit: notre équipe est prête à vous aider à concevoir des solutions robustes, évolutives et maintenables.
À retenir
Python 3.13 est une release historique. Le mode free-threaded ouvre la voie au vrai parallélisme, même s’il faudra attendre que l’écosystème suive. Le nouveau REPL rend Python plus agréable à utiliser au quotidien. Et le JIT, même expérimental, montre où va le langage.