IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée


Sujet :

Python

  1. #1
    Chroniqueur Actualités
    Avatar de Anthony
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    novembre 2022
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : novembre 2022
    Messages : 543
    Points : 8 572
    Points
    8 572
    Par défaut Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée
    Une nouvelle version alpha de Python 3.12, plus rapide et plus légère, est désormais disponible, et apporte plusieurs améliorations au niveau du multitraitement et de la gestion des erreurs

    La version 3.12.0a7 de Python a été publiée le 7 mai 2023, avec des améliorations en termes de vitesse et d'efficacité.

    Les développeurs principaux ont exposé les améliorations lors de la convention PyCon de cette année à Salt Lake City (Utah), notamment les efforts visant à réduire l'utilisation de la mémoire de Python, à rendre l'interpréteur plus rapide et à optimiser la compilation pour obtenir un code plus efficace :

    Les sous-interpréteurs sont un mécanisme par lequel le moteur d'exécution de Python peut avoir plusieurs interpréteurs fonctionnant ensemble à l'intérieur d'un seul processus, par opposition à chaque interpréteur isolé dans son propre processus (le mécanisme actuel de multiprocessing)... Bien que les sous-interpréteurs soient disponibles dans le moteur d'exécution de Python depuis un certain temps, ils n'ont pas eu d'interface pour l'utilisateur final. De plus, l'état désordonné des composants internes de Python n'a pas permis d'utiliser les sous-interpréteurs de manière efficace. Avec Python 3.12, le développeur principal de Python, Eric Snow, et sa cohorte ont suffisamment nettoyé les éléments internes de Python pour rendre les sous-interpréteurs utiles, et ils ont ajouté un module minimal à la bibliothèque standard de Python, appelé interpréteurs. Les programmeurs disposent ainsi d'un moyen rudimentaire de lancer des sous-interpréteurs et d'y exécuter du code.

    Les premières expériences de Snow avec les sous-interpréteurs ont permis d'obtenir des performances nettement supérieures à celles du threading et du multiprocessing. Un exemple, un simple service web qui effectuait des tâches liées au processeur, atteignait un maximum de 100 requêtes par seconde avec les threads et de 600 avec le multiprocessing. Mais avec les sous-interpréteurs, il a obtenu 11 500 requêtes, avec une baisse minime, voire nulle, lorsqu'il a été étendu depuis un seul client. Le module d'interprétation a des fonctionnalités très limitées pour l'instant, et il manque de mécanismes robustes pour partager l'état entre les sous-interpréteurs. Mais Snow pense que d'ici Python 3.13, beaucoup plus de fonctionnalités apparaîtront, et dans l'intervalle, les développeurs sont encouragés à expérimenter...

    Python 3.11 a introduit de nouveaux bytecodes dans l'interpréteur, appelés instructions adaptatives. Ces instructions peuvent être remplacées automatiquement au moment de l'exécution par des versions spécialisées pour un type Python donné, un processus appelé quickening. Cela évite à l'interpréteur d'avoir à rechercher les types d'objets, ce qui accélère considérablement le processus. Par exemple, si une opération d'addition donnée prend régulièrement en compte deux entiers, cette instruction peut être remplacée par une autre qui suppose que les opérandes sont tous deux des entiers... Python 3.12 dispose de plus de codes opérationnels de spécialisation adaptative...

    Et à partir de Python 3.12, les en-têtes d'objets utilisent désormais 96 octets, soit "un peu moins de la moitié de ce qu'ils étaient auparavant".

    Nom : Python-3.12.png
Affichages : 114450
Taille : 93,2 Ko

    Résumé des points forts de la version

    Nouvelles fonctionnalités de typage
    • PEP 688 : Rendre le protocole de tampon accessible dans Python
    • PEP 692 : Utilisation de TypedDict pour un typage **kwargs plus précis
    • PEP 698 : Surcharge du décorateur pour le typage statique

    Dépréciations, suppressions ou restrictions importantes
    • PEP 623 : Suppression de wstr de l'Unicode
    • PEP 632 : Suppression du paquet distutils

    Messages d'erreur améliorés

    • Les modules de la bibliothèque standard sont maintenant potentiellement suggérés dans les messages d'erreur affichés par l'interpréteur lorsqu'une NameError est remontée au niveau supérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> sys.version_info
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'sys' is not defined. Did you forget to import 'sys'?

    • Amélioration de la suggestion d'erreur pour les exceptions NameError pour les instances. Maintenant, si une NameError est relevée dans une méthode et que l'instance a un attribut qui est exactement égal au nom dans l'exception, la suggestion inclura self.<NAME> au lieu de la correspondance la plus proche dans la portée de la méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> class A:
    ...   def __init__(self):
    ...       self.blech = 1
    ...
    ...   def foo(self):
    ...       somethin = blech
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>>A().foo()
      File "<stdin>", line 1
        somethin = blech
                  ^^^^^
    NameError: name 'blech' is not defined. Did you mean: 'self.blech'?

    • Amélioration du message d'erreur SyntaxError lorsque l'utilisateur tape import x from y au lieu de from y import x.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>>import a.y.z from b.y.z
      File "<stdin>", line 1
        import a.y.z from b.y.z
        ^^^^^^^^^^^^^^^^^^^^^^^
    SyntaxError: Did you mean to use 'from ... import ...' instead?

    • Les exceptions ImportError soulevées en cas d'échec de l'instruction from <module> import <name> incluent désormais des suggestions pour la valeur de <name> en fonction des noms disponibles dans <module>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from collections import chainmap
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: cannot import name 'chainmap' from 'collections'. Did you mean: 'ChainMap'?

    Nouvelles fonctionnalités

    • Ajout de la prise en charge par Python du profileur Linux perf via la nouvelle variable d'environnement PYTHONPERFSUPPORT, la nouvelle option de ligne de commande -X perf, ainsi que les nouvelles API sys.activate_stack_trampoline(), sys.deactivate_stack_trampoline(), et sys.is_stack_trampoline_active().
    • Les méthodes d'extraction dans tarfile, et shutil.unpack_archive(), ont un nouvel argument filtre qui permet de limiter les fonctionnalités de tar qui peuvent être surprenantes ou dangereuses, telles que la création de fichiers en dehors du répertoire de destination. Voir Filtres d'extraction pour plus de détails. Dans Python 3.14, la valeur par défaut sera 'data'.

    PEP 688 : Rendre le protocole de tampon accessible dans Python

    La PEP 688 introduit un moyen d'utiliser le protocole de tampon à partir du code Python. Les classes qui implémentent la méthode __buffer__() sont maintenant utilisables comme types de tampons.

    Le nouvel ABC (Abstract Base Classes) collections.abc.Buffer fournit un moyen standard de représenter les objets tampons, par exemple dans les annotations de type. Le nouvel enum inspect.BufferFlags représente les flags qui peuvent être utilisés pour personnaliser la création de tampons.

    Nouvelles fonctionnalités liées aux indications de type

    Cette section couvre les changements majeurs affectant les indications de type PEP 484 et le module typing.

    PEP 692 : Utilisation de TypedDict pour un typage **kwargs plus précis

    Le typage des **kwargs dans une signature de fonction, tel qu'introduit par le PEP 484, ne permettait des annotations valides que dans les cas où tous les **kwargs étaient du même type.

    Cette PEP spécifie une manière plus précise de typer les **kwargs en s'appuyant sur les dictionnaires typés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from typing import TypedDict, Unpack
     
    class Movie(TypedDict):
      name: str
      year: int
     
    def foo(**kwargs: Unpack[Movie]): ...

    Voir la PEP 692 pour plus de détails.

    Source : Nouveautés dans Python 3.12

    Et vous ?

    Que pensez-vous des nouveautés apportées par la version 3.12 de Python ?

    Quelles améliorations vous intéressent le plus ?

    Voir aussi

    Python est le langage de programmation le plus utilisé et il ne montre aucun signe de ralentissement, selon l'index TIOBE de janvier 2022

    Python 3.11 est disponible et s'accompagne d'une amélioration de la vitesse, de meilleures gestion des erreurs, du type self ainsi que des notes d'exception

    JetBrains lance le programme d'accès anticipé (EAP) à PyCharm 2023.1, la première mise à jour majeure de l'année de son EDI Python
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités
      7  0

  2. #2
    Chroniqueur Actualités
    Avatar de Anthony
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    novembre 2022
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : novembre 2022
    Messages : 543
    Points : 8 572
    Points
    8 572
    Par défaut Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée
    Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée, et apporte de nouvelles fonctionnalités ainsi que des corrections de bogues

    Python 3.12 est toujours en cours de développement. Cette version, 3.12.0b1, est la première des quatre versions bêta de la 3.12.

    Les versions bêta sont destinées à donner à l'ensemble de la communauté la possibilité de tester les nouvelles fonctionnalités et les corrections de bogues, et de préparer leurs projets à prendre en charge la nouvelle version.

    Les responsables de projets Python tiers sont vivement encouragés à tester la version 3.12 au cours de la phase bêta et à signaler dès que possible les problèmes constatés au Python bug tracker (https://github.com/python/cpython/issues). Bien qu'il soit prévu que la version soit complète au début de la phase bêta, il est possible que des fonctionnalités soient modifiées ou, dans de rares cas, supprimées jusqu'au début de la phase de la version candidate (lundi 2023-07-31). L'objectif est de n'avoir aucun changement d'ABI après la bêta 4 et aussi peu de changements de code que possible après la 3.12.0rc1, la première version candidate. Pour y parvenir, il sera extrêmement important de faire connaître la 3.12 autant que possible pendant la phase bêta.

    N'oubliez pas qu'il s'agit d'une version préliminaire et que son utilisation n'est pas recommandée pour les environnements de production.

    Nom : Python-3.12.png
Affichages : 66904
Taille : 93,2 Ko

    Principales nouveautés de la série 3.12 par rapport à la 3.11

    Voici quelques-unes des principales nouveautés et modifications de Python 3.12 :

    • Nouvelle syntaxe d'annotation de type pour les classes génériques (PEP 695).
    • Analyse plus souple des f-string, permettant de nombreuses choses auparavant interdites (PEP 701).
    • Des messages d'erreur encore améliorés. Plus d'exceptions potentiellement causées par des fautes de frappe sont maintenant suggérées à l'utilisateur.
    • De nombreuses améliorations, petites et grandes, des performances (comme PEP 709).
    • Prise en charge du profileur Linux perf pour signaler les noms de fonctions Python dans les traces.
    • Les membres wstr et wstr_length de l'implémentation C des objets unicode ont été supprimés, conformément à la PEP 623.
    • Dans le module unittest, un certain nombre de méthodes et de classes dépréciées depuis longtemps ont été supprimées. (Elles étaient dépréciées depuis Python 3.1 ou 3.2).
    • Les modules smtpd et distutils, obsolètes, ont été supprimés (voir PEP 594 et PEP 632). Le paquet setuptools (installé par défaut dans virtualenvs et dans de nombreux autres endroits) continue de fournir le module distutils.
    • Un certain nombre d'autres fonctions, classes et méthodes anciennes, obsolètes et dépréciées ont été supprimées.
    • Les séquences d'échappement backslash invalides dans les chaînes de caractères sont désormais signalées par SyntaxWarning au lieu de DeprecationWarning, ce qui les rend plus visibles. (Elles deviendront des erreurs de syntaxe à l'avenir).
    • La représentation interne des entiers a été modifiée en vue d'améliorer les performances. (Cela ne devrait pas affecter la plupart des utilisateurs puisqu'il s'agit d'un détail interne, mais cela peut poser des problèmes pour le code généré par Cython).

    Pour plus de détails sur les changements apportés à Python 3.12, voir What's new in Python 3.12. La prochaine préversion de Python 3.12 sera la 3.12.0b2, actuellement prévue pour le 2023-05-29.

    Source : Python 3.12.0b1

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    Une nouvelle version alpha de Python 3.12, plus rapide et plus légère, est désormais disponible, et apporte plusieurs améliorations au niveau du multitraitement et de la gestion des erreurs

    Python 3.11 est disponible et s'accompagne d'une amélioration de la vitesse, de meilleures gestion des erreurs, du type self ainsi que des notes d'exception
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités
      7  0

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/09/2018, 16h26
  2. Réponses: 5
    Dernier message: 11/08/2018, 21h58
  3. La version 1.12 de Rust est désormais disponible !
    Par Songbird dans le forum Rust
    Réponses: 0
    Dernier message: 10/10/2016, 09h41
  4. Skype est désormais disponible en version finale sur Mac et Windows
    Par Stéphane le calme dans le forum Actualités
    Réponses: 3
    Dernier message: 08/11/2014, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo