Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Une première version alpha de Python 3.8 est publiée,
Voici un tour d'horizon des nouveautés de cette version

Le , par Bill Fassinou

230PARTAGES

14  0 
Le samedi passé, la Python Software Foundation (PSF) a publié la première version alpha de Python 3.8 dénommée Python 3.8a1. Notons qu’une version alpha représente la première version d'un logiciel destiné uniquement aux programmeurs afin qu'ils le testent et pour détecter les bogues. Une fois ce test terminé, l'outil passe ainsi en version bêta qui constitue la dernière phase avant la version finale. Le PSF prévoit pour cette version-ci quatre versions alpha. La version de prévisualisation c’est-à-dire les versions alpha seront publiées sur une période allant de février à mai ; une période au cours de laquelle les nouvelles fonctionnalités et entités prévues seront ajoutées l’une après l’autre jusqu’à la version bêta attendue pour le 26 mai prochain.

Rappelons que Python 3.7 a été rendu disponible en juin dernier avec des améliorations diverses et quelques nouvelles fonctionnalités. Parmi les fonctionnalités majeures de Python 3.7, on pouvait noter une nouvelle API C pour le stockage local des threads (en anglais, Thread Local Storage ou TLS). Pour information, le TLS est le mécanisme par lequel chaque thread d'un processus multithread donné alloue de l'espace de stockage pour les données spécifiques au thread. En septembre 2018, quelques polémiques autour des mots clés master et slave avaient poussés la fondation à envisager de les remplacer par d’autres mots dans le langage comme l’avait fait Drupal et Django en 2014.


« Le mot "slave" a des connotations négatives (bien que cela puisse ou non être pertinent dans la dénomination d'un terme technique), y compris l'histoire de l'esclavage sur plusieurs siècles au bénéfice des puissances coloniales européennes, les travailleurs pénitentiaires aujourd'hui forcés de travailler dans des conditions parfois similaires à l'esclavage et les jeunes filles vendues dans l'esclavage sexuel dans de nombreuses régions du monde aujourd'hui », expliquait le projet Drupal dans sa dynamique de suppression de ces mots. Python 3.8a1 annonce plusieurs nouvelles fonctionnalités, de nombreuses améliorations et changements sur quelques modules ainsi que certaines optimisations. L’équipe de développement a souligné qu’une grande partie des nouveautés introduites proviennent des propositions d’améliorations Python (PEP). Faisons ci-dessous un petit tour de quelques nouveautés dans Python 3.8a1 :

  • asyncio : la boucle d'événement par défaut est maintenant ProactorEventLoop sous Windows ;
  • gettext : permet d’ajouter le support gettext.pgetext() et ses variantes. Le module gettext() fournit des services d'internationalisation (I18N) et de localisation (L10N) pour vos applications Python. Il prend en charge à la fois l'API du catalogue de messages GNU gettext et une API de niveau supérieur, basée sur les classes, qui peut être plus appropriée pour les fichiers Python ;
  • gzip : vous permet d’ajouter le paramètre mtime à gzip.compress() pour une sortie reproductible ;
  • idlelib et IDLE : la sortie sur N lignes (50 par défaut) est réduite à un bouton. N peut être modifié dans la section Py Shell de la page Général de la boîte de dialogue Paramètres. Moins de lignes, mais éventuellement très longues, peuvent être compressées en cliquant avec le bouton droit de la souris sur la sortie. La sortie comprimée peut être développée à la place en double-cliquant sur le bouton dans le presse-papiers ou dans une fenêtre séparée en cliquant avec le bouton droit de la souris. Les modifications ci-dessus ont été rétablies dans les versions de maintenance 3.7 ;
  • json.tool : vous permet d’ajouter une option --json-lines pour analyser chaque ligne d'entrée en tant qu'objet JSON séparé ;
  • shutil : shutil.copytree() accepte maintenant un nouvel argument dirs_exist_ok de mot clé ;
  • etc.

D’autres nouveautés concernent des optimisations, des constructions et des modifications de l’API CPython. Quelques fonctionnalités de la version 3.7 de Python jugées obsolètes par l’équipe ont été supprimées. Il s’agit des fonctionnalités telles que le module mcpath, de la fonction platform.popen(), le script pyvenv et de la méthode doctype(). Les changements décrits au sein du bytecode de CPython tournent autour de la boucle d’interprétation et de l’ajout d’un nouvel opcode. La boucle d’interprétation a été simplifiée en déplaçant la logique de déroulement dans la pile de bloc dans le compilateur.

Le nouvel opcode nommé END_ASYNC_FOR , quant à lui a été ajouté pour la gestion des exceptions générées lors de l’attente d’un prochain article dans une boucle. Vous pouvez accéder à la documentation de Python 3.8a1 pour une liste plus exhaustive des nouvelles fonctionnalités et pour plus d’informations. L’équipe a indiqué que la prochaine préversion autrement dire la deuxième version alpha, Python 3.8a2 sera publiée le 24 de ce mois. En attendant, elle met à disposition la documentation de la version 3.8a1 encore incomplète, le site du PEP pour cette version ainsi que le site officiel où sont répertoriés les bogues pour permettre à la communauté de signaler les éventuels bogues qui pourraient être rencontrés au cours des tests.

Source : Python Software Foundation

Et vous ?

Que pensez-vous des améliorations apportées à Python 3.8a1 ?
Quelles fonctionnalités souhaiteriez-vous avoir pour Python 3.8 ?

Voir aussi

Python 3.7 est disponible, une version majeure avec beaucoup de nouvelles fonctionnalités et optimisations, et des améliorations de performance

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

Black : l'outil de formatage de code Python transforme les guillemets droits simples en guillemets doubles, les auteurs expliquent leurs choix

Facebook lance Pyre, un vérificateur de type statique pour Python, cet outil va-t-il révolutionner le développement avec Python ?

Python devient le langage de programmation le plus populaire de mai 2018, d'après le baromètre PyPL

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de bistouille
Membre éprouvé https://www.developpez.com
Le 05/02/2019 à 22:32
J'ai pour l'instant lu en diagonale, mais :

Capturing condition values
Pour ça, je dirais : enfin !

Code : Sélectionner tout
Alternative spellings
Pareil, je m'étais toujours demandé pourqoi le as était seulement réservé à quelques syntaxes et non pas généralisé à d'autres expressions.

La version finale de python3 approche, il est temps car ça devient un peu barbant d'enchaîner les versions, j'imagine même pas pour les developpeurs de modules complexes.
0  0 
Avatar de Pyramidev
Expert confirmé https://www.developpez.com
Le 06/02/2019 à 0:48
Citation Envoyé par Bill Fassinou Voir le message
Quelles fonctionnalités souhaiteriez-vous avoir pour Python 3.8 ?
Pour ma part, j'attends avec impatience typing.Protocol défini dans PEP 544. Il n'est pas encore disponible dans Python 3.7 et, pour l'instant, je ne le vois pas dans les nouveautés de Python 3.8.
0  0