
voici un tour d'horizon des nouveautés de cette version
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 ?


Voir aussi





Vous avez lu gratuitement 460 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.