Python 3.5 a représenté un tournant majeur dans le débat qui divisait la communauté par rapport au passage de la branche 2.x à la branche 3.x. En effet, dès sa sortie, Python 3 n’a pas vraiment suscité l’enthousiasme d’une grande partie de la communauté, qui utilisait toujours Python 2, et il a fallu attendre l’arrivée de cette cinquième itération de la version 3 pour que les choses commencent à évoluer. Elle a été livrée avec un grand nombre de nouveautés et de changement devant inciter les développeurs ainsi que les organisations à sauter le pas, un effort qui n’a pas été totalement vain.
Notons que les débats sur ces deux versions de Python résidaient dans le fait que certains développeurs ont trouvé trop brutale la transition entre 2.x et 3.x, à cause d’une certaine rupture de la compatibilité. S’il semble idéal de commencer les nouveaux projets Python avec les versions 3.x, toutefois la migration des projets existants pourrait s’avérer très coûteuse, principalement pour les grands projets. Pour cette raison, de nombreuses entreprises s’accrochaient aux anciennes versions. Plusieurs sondages ont révélé que pas mal d’organisations utilisaient toujours Python 2 en 2020.
En août 2019 par exemple, il a été rapporté que plus de 100 projets Python populaires utilisent toujours la version 2 du langage, mais ces derniers ont annoncé qu’ils s'engageaient à abandonner Python 2 courant 2020. L'agence britannique de cybersécurité a appelé à arrêter de supporter cette version de Python. À ce jour, il n’est pas certain que tous sont déjà passés à l’une des moutures de Python 3, mais ce qui est certain, c’est que la fondation Python a cessé de supporter Python 2.7, la dernière version de Python 2, depuis le 1er janvier de cette année comme elle l’avait annoncé en 2018.
À l’opposé, les autres développeurs estiment que les améliorations qui ont été introduites dans Python 3.x, comme pour le support de l’Unicode sont suffisantes pour abandonner les versions 2.x. D’autres parmi eux avaient expliqué que l’abandon du support de Python 2.x serait la bienvenue, dans la mesure où l’utilisation parallèle de ces différentes versions pourrait tuer le langage et entrainer un exode vers d’autres langages équivalents. Ainsi, l’arrêt définitif du support de Python 2 est intervenu quelques mois après la sortie de Python 3.8 (octobre 2019).
Si Python 3.6 est maintenant la plus ancienne version de Python prise en charge, son support s’éteindra dès décembre 2021. Dans le même ordre, la fin de vie des versions 3.7 et 3.8 suivra respectivement en juin 2023 et en octobre 2024. Pour l’instant, seule la version 3.8 continuera à bénéficier de correctifs de bogues. Dans le cas de Python 3.6 et 3.7, seuls des correctifs de sécurité sont toujours disponibles pour ces deux versions. En outre, la version 3.9 est en attente de publication, et ainsi, elle fait actuellement l’objet d’une correction des bogues répertoriés dans les versions alpha. Voici une liste des fonctionnalités auxquelles il faut s’attendre.
- la possibilité de construire des types génériques dans les collections standard ;
- un nouvel analyseur PEG ;
- une ordre topologique
- plusieurs nouvelles méthodes de calcul et d'analyse des chaînes de caractères ;
- nextafter(a, b) qui retourne le prochain nombre flottant après a allant vers b ;
- ulp(a) qui retourne la valeur du bit le moins significatif d'un flottant. ULP signifie “Unit in the Last Place” et est utilisé comme mesure de précision dans les calculs numériques ;
- etc.
Il s’agit là seulement de quelques fonctionnalités prévues pour être livrées avec Python 3.9. L’équipe de développement du langage avait annoncé que certaines de ces fonctionnalités se traduisent par un code plus propre et plus compréhensible, et que d'autres pourraient recadrer l’état d'esprit sur la grammaire Python. Les travaux sur Python 3.10, qui succédera à Python 3.9, sont également déjà en cours. C’est l’actuelle branche master du projet et la seule à même de recevoir de nouvelles fonctionnalités. Entre autres changements annoncés, en voici quelques-uns.
- le type int a désormais une nouvelle méthode “int.bit_count()”, qui renvoie le nombre de "uns" (1) dans l'expansion binaire d'un entier donné, aussi appelé nombre de population ;
- les vues renvoyées par dict.keys(), dict.values() et dict.items() ont maintenant toutes un attribut de mapping qui donne un objet types.MappingProxyType enveloppant le dictionnaire original ;
- la fonction zip() a maintenant un drapeau strict optionnel, utilisé pour exiger que tous les itérables aient une longueur égale ;
- les fonctions de construction et d'extension qui prennent des arguments entiers n'acceptent plus les décimales, les fractions et autres objets qui ne peuvent être convertis en nombres entiers qu'avec une perte ;
- etc.
La version 3.9 sera livrée le 5 octobre prochain, tandis que la version 3.10 est attendue pour le 4 octobre 2021. Si la branche 3 continue d'évoluer, il est quand même important de savoir si la communauté est actuellement sur la même longueur d’onde. Autrement dit, est-ce que la grande majorité des projets Python utilisent aujourd’hui Python 3.x ? Un sondage devra être fait afin d'en savoir plus. Cependant, certains commentaires d’internautes montrent que beaucoup continuent encore d’utiliser Python 2.x.
Source : Python
Et vous ?
Qu'en pensez-vous ?
Quelle version de Python utilisez-vous ?
Avez-vous déjà fait la migration vers Python 3.x ? Sinon, pourquoi ?
Voir aussi
Python 3.5.0 disponible avec une pile de nouveautés et améliorations. Faut-il maintenant mettre fin au support de Python 2.x ?
Plus de 100 projets Python populaires s'engagent à abandonner Python 2.x d'ici 2020. L'agence britannique de cybersécurité appelle également à arrêter de supporter cette version de Python
Python 3.9, la prochaine version du langage Python : construction des types génériques dans les collections standard et un analyseur PEG pour CPython
Les chiffres clés de la communauté Python en 2019 : EDI, frameworks, SGBD, plateformes cloud, etc. Quelles sont les technologies les plus utilisées ?