La nouvelle version stable de Python 3.12 arrive et voici ses nouveautés

Logo Python

Python est un langage de programmation de haut niveau.

Après un an de développement, La sortie de la version stable a été annoncée et aussi le début de la phase de test alpha du langage de programmation Python 3.12 et Python 3.13 (respectivement). Il est mentionné que cette nouvelle branche de Python 3.12 sera supportée pendant un an et demi, après quoi, pendant encore trois ans et demi, des correctifs seront générés pour éliminer les vulnérabilités.

La nouvelle version de Python 3.12 présentée s'accompagne d'améliorations au niveau flexibilité de l’analyse des chaînes f. Avec cette amélioration maintenant de nombreuses restrictions peuvent être laissées de côté, puisque par exemple vous pouvez désormais contenir n'importe quelle expression valide en Python, y compris les expressions multilignes, les commentaires, les barres obliques inverses et les séquences d'échappement Unicode. De plus, les chaînes internes permettent désormais de réutiliser les mêmes guillemets, c'est-à-dire que les guillemets doubles peuvent désormais être réutilisés à l'intérieur sans avoir à passer aux guillemets simples.

Par exemple :

f"""{f'''{f'{f"{1+1}"}'}'''}"""

Il est désormais possible d'imbriquer arbitrairement :

f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"

Un autre des changements qui se démarque est le prise en charge de sous-interprètes isolés et de verrous globaux séparés, qui visent à augmenter l'efficacité de l'utilisation des ressources dans les systèmes multicœurs, car pour différents interprètes au sein d'un processus, CPython permet à plusieurs interprètes de s'exécuter en même temps dans un processus. Dans l’état actuel des choses, la fonctionnalité n’est actuellement disponible que via C-API (le support de l’API Python apparaîtra dans la prochaine branche majeure).

En plus de cela, il est également souligné queLe contenu informatif des messages d'erreur a été augmenté et la gamme d'exceptions a été élargie, proposant des recommandations pour éliminer les erreurs typographiques. Par exemple, des suggestions pour importer des modules de bibliothèque standard oubliés et des suggestions pour préfixer « self » sont désormais affichées.

Ajout de la possibilité d'utiliser le protocole tampon dans le code Python. Les classes qui fournissent une méthode "__buffer__()" peuvent désormais être utilisées comme types opérant directement sur les données binaires en mémoire.

Le module sys.monitoring est proposé pour le débogage et le profilage, vous permettant de surveiller les événements dans CPython tels que les appels, les retours de fonctions, l'exécution de lignes de code arbitraires, les exceptions et les transitions avec une surcharge minimale.

L'interpréteur implémente la prise en charge du sous-système de performances du noyau Linux, qui permet de déterminer les noms de fonctions Python lors du profilage à l'aide de l'utilitaire de performances (auparavant, seuls les noms de fonctions C étaient déterminés dans les traces).

Concernant les améliorations de performances, il est mentionné que les optimisations se sont poursuivies, avec laquelle Un gain de performance total estimé à 5% a été obtenu., il a également été ajouté support expérimental pour l'optimiseur binaire BOLT au processus de construction, augmentant les performances de 1 à 5 %, tandis que les performances du package asyncio se sont considérablement améliorées (certains tests montrent une accélération de 75 %).

L'expansion en ligne des compréhensions de listes a été implémentée, ce qui accélère jusqu'à deux fois le travail avec les compréhensions de listes (pour le code qui utilise activement les compréhensions de listes, les tests ont montré une augmentation globale des performances de 11 %).

Pour améliorer la sécurité, implémentations intégrées de Les algorithmes SHA1, SHA3, SHA2-384, SHA2-512 et MD5 dans hashlib ont été remplacés avec des options formellement vérifiées du projet HACL* (les implémentations intégrées ne sont utilisées que si OpenSSL n'est pas disponible).

De l' autres changements qui se démarquent:

  • Le module a étendu la prise en charge de Windows.
  • Python implémente une protection contre le débordement de pile.
    La création de la classe asyncio.Task a été accélérée.
  • La taille des objets Unicode a été réduite de 8 à 16 octets.
  • Les opérations avec les expressions régulières re.sub(), re.subn() et re.Pattern ont été accélérées.
  • L'exécution des vérifications isinstance() pour certains protocoles a été accélérée de 2 à 20 fois.
  • De manière significative (dans certains tests jusqu'à 64 %), les fonctions tokenize.tokenize() et tokenize.generate_tokens() ont été accélérées.
  • Le chargement des attributs et l'appel de la méthode super() ont été accélérés.
  • Une nouvelle syntaxe d'annotation de type plus compacte a été proposée pour les classes et fonctions génériques.
  • Le module de navigateur Web ne prend plus en charge les anciens navigateurs, notamment Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird et Firefox jusqu'à la version 36.
  • En préparation de futures optimisations, la représentation interne des entiers a été modifiée.

Enfin, comme mentionné, les tests alpha de Python 3.13 ont commencé, dans lesquels un mode compilation est apparu CPython sans verrou d'interpréteur global (GIL, Verrouillage global de l'interprète).

Branche Python 3.13 sera en alpha pendant sept mois, pendant laquelle de nouvelles fonctionnalités seront ajoutées et des bugs corrigés 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 au moment où la prochaine version atteint la phase de test alpha.

Après cela, les versions bêta seront testées pendant trois mois, pendant lesquels l'ajout de nouvelles fonctionnalités sera interdit et toute l'attention sera portée à la correction des bugs. Au cours des deux derniers mois précédant la sortie, la branche sera en phase de release candidate, où la stabilisation finale aura lieu.

Enfin oui vous êtes intéressé à en savoir plus, vous pouvez vérifier les détails dans le lien suivant