Se rendre au contenu

Starlette 0.50

Python 3.9 abandonné, cap sur les syntaxes modernes
1 novembre 2025 par
Starlette 0.50
Makersquad

Date de sortie : 1er novembre 2025

Documentation officielle : https://www.starlette.io

Starlette est le framework ASGI Python sur lequel repose FastAPI. Conçu pour rester aussi proche que possible du protocole ASGI sans imposer de structure applicative rigide, il est utilisé autant pour construire des micro-services que comme brique de base pour des frameworks plus haut niveau. La version 0.50 marque une rupture de compatibilité nette avec les anciennes versions de Python.


Les nouveautés principales

BREAKING : abandon de Python 3.9, minimum requis 3.10

C’est le changement le plus impactant de cette version. Python 3.9 n’est plus supporté. La version minimale passe à Python 3.10.

Si tu es encore sur Python 3.9 en production, c’est le moment de planifier la migration. Python 3.9 est en fin de vie depuis octobre 2025 — rester dessus, c’est accumuler de la dette de sécurité sans bénéfice.


Adoption des syntaxes modernes Python 3.10+

En abandonnant Python 3.9, Starlette peut maintenant utiliser les syntaxes de typage introduites en 3.10 dans son propre code source. Le bénéfice est une base de code plus lisible et plus cohérente avec les pratiques actuelles.

# Avant (Python 3.9 et anterieur)
from typing import Union, Optional

def handler(x: Union[str, int]) -> Optional[str]: ...

# Maintenant (Python 3.10+)
def handler(x: str | int) -> str | None: ...

L’opérateur | pour les unions de types et X | None à la place d’Optional[X] sont désormais utilisés partout dans Starlette. Si tu contribues au projet ou que tu inspectes le code source, tu trouveras un style bien plus contemporain.


Conformité RFC 7232 pour StaticFiles

Correction de comportement dans StaticFiles concernant la gestion des en-têtes de cache conditionnels. La RFC 7232 spécifie que si une requête contient à la fois If-None-Match et If-Modified-Since, l’en-tête If-Modified-Since doit être ignoré — If-None-Match a la priorité.

Starlette ne respectait pas cette règle. C’est maintenant corrigé. Dans la pratique, cela améliore la compatibilité avec les clients HTTP stricts et les proxies de cache qui s’attendent à un comportement conforme aux standards.


Types middleware assouplis

Les annotations de type sur les middlewares ont été rendues moins strictes. Cela réduit les faux positifs avec mypy et pyright pour les middlewares personnalisés, sans changer le comportement à l’exécution. Un ajustement bienvenu pour les projets qui ont une configuration de type checking stricte.


Améliorations Content-Type charset

La gestion du charset dans les en-têtes Content-Type a été affinée. Les cas limites autour de l’encodage explicite dans les réponses texte sont maintenant traités de façon plus cohérente.


Échanger avec un expert FastAPI

Nous revenons vers vous sous 24h.


Chez Makersquad, nous concevons des API performantes et évolutives avec FastAPI, un framework reconnu pour sa rapidité, son typage natif et sa documentation automatique basée sur OpenAPI. Que ce soit pour des microservices ou des projets orientés data et IA, FastAPI permet de développer des services robustes tout en garantissant un excellent niveau de performance. Que vous lanciez un nouveau projet ou souhaitiez moderniser votre backend, notre équipe vous accompagne pour construire des API rapides, fiables et prêtes à scaler.


À retenir

Starlette 0.50 est une release de modernisation. Le saut vers Python 3.10 minimum est un signal clair : le projet suit le cycle de vie officiel de Python et ne s’encombre plus de compatibilité ascendante indéfinie. Si ton projet tourne encore sur Python 3.9, cette version est l’occasion de bouger — la migration 3.9 vers 3.10 est généralement sans friction pour les applications Starlette/FastAPI standard.

Starlette 0.40
patch de sécurité critique CVE-2024-47874