Python est un langage de programmation interprété de haut niveau dont la philosophie met l'accent sur la lisibilité de son code.
Après un an de développement, la nouvelle version du langage de programmation Python, la 3.11 , est disponible. Cette nouvelle branche bénéficiera d'un support d'un an et demi, après quoi des correctifs seront publiés pendant trois ans et demi afin de remédier aux vulnérabilités.
Dans le même temps, les tests alpha de la branche Python 3.12 ont commencé (selon le nouveau calendrier de développement, le travail sur une nouvelle branche commence cinq mois avant la sortie de la branche précédente et atteint le stade des tests alpha au moment de la version suivante).
La branche Python 3.12 sera en versions alpha pendant sept mois, au cours desquels de nouvelles fonctionnalités seront ajoutées et des bogues corrigés. Après cela, des tests bêta auront lieu pendant trois mois, au cours desquels l'ajout de nouvelles fonctionnalités sera interdit et toute l'attention sera accordée aux corrections de bogues. Les deux derniers mois avant le lancement, la succursale sera au stade de candidat au lancement, moment auquel la stabilisation finale aura lieu.
Principales nouveautés de Python 3.11
Cette nouvelle version intègre des améliorations significatives en matière de performances . La nouvelle branche inclut des modifications relatives à l'accélération et au déploiement direct des appels de fonctions , à l'utilisation d'interpréteurs rapides pour les opérations courantes, ainsi qu'aux optimisations développées par les projets Cinder et HotPy. Selon la charge de travail, la vitesse d'exécution du code augmente de 10 % à 60 %. En moyenne, les performances sur la suite de tests pyperformance ont progressé de 25 %.
Le mécanisme de mise en cache du bytecode a été repensé , réduisant ainsi le temps de démarrage de l'interpréteur de 10 à 15 %. Les objets contenant du bytecode sont désormais alloués statiquement par l'interpréteur, ce qui élimine les étapes de décodage du bytecode récupéré du cache et de conversion des objets contenant du bytecode pour un placement dynamique en mémoire.
La prise en charge des groupes d'exceptions a été ajoutée , permettant ainsi au programme de générer et de traiter simultanément plusieurs exceptions différentes. De nouveaux types d'exceptions, ExceptionGroup et BaseExceptionGroup, sont proposés pour regrouper et combiner plusieurs exceptions, et l'expression « except* » a été ajoutée pour séparer les exceptions au sein d'un groupe.
Un type spécial, LiteralString, a été ajouté. Il ne peut contenir que des chaînes littérales compatibles avec le type LiteralString (c’est-à-dire des chaînes simples et des chaînes de type LiteralString, mais pas des chaînes arbitraires ou combinées de type str). Le type LiteralString permet de limiter le passage d’arguments de type chaîne aux fonctions, empêchant ainsi la substitution arbitraire de parties de chaînes, source potentielle de vulnérabilités, par exemple lors de la génération de chaînes pour des requêtes SQL ou des commandes shell.
En outre, la possibilité de marquer les éléments individuels des dictionnaires typés (TypedDict) avec des marques Obligatoire et Non Obligatoire est également fournie pour déterminer les champs obligatoires et facultatifs (par défaut, tous les champs déclarés sont obligatoires si le paramètre total n'est pas défini sur Faux).
Le décorateur de classe, de méthode et de fonction @dataclass_transform a été ajouté ; lorsqu'il est spécifié, le vérificateur de type statique traite l'objet comme s'il utilisait le décorateur @dataclasses.dataclass.
Parmi les autres changements qui ressortent de cette nouvelle version:
- Ajout de la possibilité d'utiliser le groupement atomique ((?>…)) et les quantificateurs jaloux (possessifs) (*+, ++, ?+, {m,n}+) dans les expressions régulières.
- Le type TypeVarTuple a été ajouté, ce qui permet l'utilisation de variables génériques, contrairement à TypeVar, qui ne couvre pas un type, mais un nombre arbitraire de types.
- La bibliothèque standard inclut le module tomllib avec des fonctions pour analyser le format TOML.
- La méthode add_note() a été ajoutée à la classe BaseException, ce qui permet d'attacher une note textuelle à l'exception, par exemple pour ajouter des informations contextuelles qui n'étaient pas disponibles au moment où l'exception a été levée.
- Un type spécial Self a été ajouté pour représenter la classe privée actuelle. Self peut être utilisé pour annoter des méthodes qui renvoient une instance de votre classe d'une manière plus simple que d'utiliser TypeVar.
- Ajout de l'option de ligne de commande "-P" et de la variable d'environnement PYTHONSAFEPATH pour désactiver la connexion automatique des chemins de fichiers potentiellement dangereux à sys.path.
- L'utilitaire py.exe pour la plate-forme Windows a été considérablement amélioré pour prendre en charge la syntaxe "-V:". / " en plus de "- . ».
- De nombreuses macros de l'API C ont été converties en fonctions en ligne régulières ou statiques
- Les modules uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev et sunau sont obsolètes et seront supprimés de Python. Version 3.13.
- Suppression des fonctions PyUnicode_Encode*.
- La classe TaskGroup a été ajoutée au module asyncio avec l'implémentation d'un gestionnaire de contexte asynchrone qui attend la fin du groupe de tâches.
- L'ajout de tâches à un groupe se fait à l'aide de la méthode create_task().
Enfin, si vous souhaitez en savoir plus à ce sujet , vous trouverez les détails en suivant ce lien.