Python 3.8.0 : la première version bêta est publiée avec une API C
pour améliorer la configuration de l’initialisation
La version 3.8.0 du langage de programmation Python est encore en développement, mais compte tenu de son calendrier, l’équipe de développement du langage a lancé la phase bêta et a donc publié hier la première version bêta de Python 3.8.0. Comme toute nouvelle version, elle apporte de nouvelles fonctionnalités, en plus de quelques corrections de bogues. L’équipe s’attend à ce que les responsables de projets Python procèdent au test de cette version bêta et à signaler les éventuels problèmes qu’ils pourraient rencontrer afin de faciliter la publication finale sans défauts majeurs de la version 3.8.0.
Le début de la publication de la version 3.8.0 de Python étant prévu pour la fin du mois de septembre de cette année, l’équipe de développement du langage a lancé hier la phase test. La première version bêta de Python 3.8.0 apporte de nombreuses nouvelles fonctionnalités au langage, notamment les expressions d’affectation, une nouvelle API C pour configurer l’initialisation Python, des paramètres de position, la fusion de typed_ast avec CPython, LOAD_GLOBAL est maintenant 40 % fois plus rapide et pickle utilise maintenant le protocole 4 par défaut pour améliorer encore plus les performances.
L’équipe de développement du langage a introduit dans cette version des expressions d’affection un peu différentes de celles qui existaient déjà dans Python. Introduit par le PEP 572, il s’agit d’une fonctionnalité qui permet d'affecter des variables dans une expression en utilisant la notation NAME: = expr. Cela permet de rendre le code plus compact et d’éviter des calculs répétés. À cet effet, une nouvelle exception, TargetScopeError, a été ajoutée et un changement a été apporté à l'ordre d'évaluation. Dans la note de version de version, il est indiqué qu’actuellement, cette fonctionnalité n'est disponible que sous forme d'instruction, ce qui la rend indisponible dans les compréhensions de liste et les autres contextes d'expression.
Python 3.8.0b1 embarque une nouvelle API C améliorée pour configurer l’initialisation du langage. L’ajout de cette API C pour configurer l’initialisation Python offre un contrôle plus précis de l’ensemble de la configuration et un meilleur rapport d’erreurs. Il devient possible de lire la configuration, puis de remplacer certains paramètres calculés avant son application. Il devient également possible de remplacer complètement la façon dont Python calcule les chemins de recherche du module (sys.path). La nouvelle configuration isolée fournit des valeurs par défaut saines pour isoler Python du système. Par exemple, incorporer Python dans une application. L'utilisation de l'environnement constitue désormais une option d'adhésion plutôt qu'une option de désinscription. Par exemple, les variables d'environnement, les arguments de ligne de commande et les variables de configuration globale sont ignorés par défaut.
L'API C de l'initialisation Python 3.7 prend en entrée les chaînes wchar_t *, alors que l'encodage du système de fichiers Python est défini pendant l'initialisation, ce qui peut entraîner « mojibake ». Notez cependant que « mojibake » est un emprunt lexical du japonais qui signifie que les caractères affichés à l'écran d'un logiciel ne s'affichent pas correctement, à cause d'un problème de codage. En langage courant et face à élément illisible le français dira « je vois des hiéroglyphes ». Ces nouveautés visent donc à améliorer le comportement et les défauts de l’API C observé dans les versions précédentes de Python.
Python 3.8 fournit désormais les structures PyConfig, PyPreConfig, PyStatus et PyWideStringList dans la nouvelle API améliorée, qui ont des fonctions communes pour définir des paramètres individuels ainsi que pour lire et effacer la configuration. Les développeurs peuvent lire et écraser les paramètres calculés avant d'appliquer la configuration. Comme cela a été expliqué un peu plus haut, une autre nouveauté à propos de l’API est la possibilité de créer une configuration isolée du système à l'aide de PyPreConfig_InitIsolatedConfig() et PyConfig_InitIsolatedConfig() qui ignore les variables de configuration et d'environnement globales, ainsi que les paramètres de ligne de commande.
Une autre fonctionnalité mise en avant dans cette version 3.8.0 est les paramètres de position dans la définition de fonctions Python. Le PEP 570 introduit une nouvelle syntaxe « / » pour spécifier des paramètres de position uniquement dans les définitions de fonction Python. Les paramètres de position uniquement n'ont pas un nom utilisable en externe. Lorsqu'une fonction acceptant des paramètres uniquement positionnels est appelée, les arguments positionnels sont mappés sur ces paramètres uniquement en fonction de leur ordre.
Même si la proposition définit une nouvelle syntaxe, les paramètres de position uniquement existent déjà dans les fonctions intégrées dans CPython, comme dans pow(x, y [, z]). La syntaxe proposée dans le PEP 570 étend la précédente et est donc totalement compatible avec les versions antérieures. Les paramètres purement déterminés par la position peuvent être au début d'une liste de paramètres et suivie d'un « / » pour le marquage. Ensuite, vous pouvez d’abord suivre les paramètres spécifiques à la position ou aux mots clés, et après la division * à la fin, les paramètres spécifiques aux mots clés.
Il existe de nombreuses autres fonctionnalités qui ont été publiées avec cette première préversion de Python 3.8.0 que vous pourrez consulter par l’intermédiaire de sa note de version. On pourrait citer, par exemple, les crochets d’audit à l’exécution, la fusion de typed_ast avec CPython, LOAD_GLOBAL a été rendu 40 % fois plus rapide et pickle a été configuré pour maintenant utiliser le protocole 4 par défaut pour améliorer encore plus les performances. L’autre chose à noter peut-être est que sur Mac OS, la méthode Spawn Start est maintenant utilisée par défaut dans multiprocessing.
Vous pouvez essayer cette première préversion de Python 3.8.0 et rapporter les éventuels problèmes à l’équipe de développement en attendant la publication de la deuxième préversion prévue pour le 1er juillet prochain. Cependant, il est également possible que les nombreuses fonctionnalités qui seront présentées pendant la phase de test soient modifiées ou, dans de rares cas, supprimées jusqu'au début de la phase de publication (2019-09-30).
Source : Python
Et vous ?
Qu'en pensez-vous ?
Voir aussi
Windows 10 : Python 3.7 peut désormais être téléchargé sur Microsoft Store. Microsoft prévient que cette version est encore en cours d'évaluation
Guido Van Rossum, le créateur de Python, rend en partie responsables les médias sociaux de sa démission de la direction du projet
Python va supprimer les termes "master/slave" de sa documentation et sa base de code pour des raisons de diversité et leur connotation à l'esclavage
Partager