Se rendre au contenu

Python 3.13 est sorti

7 octobre 2024 par
Python 3.13 est sorti
Makersquad

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.

React 19 est sorti
Actions et Server Components