Les 7 nouveaux modules sont sans doute le changement le plus important opéré pour cette nouvelle version de Python 3.4. Le gestionnaire des versions de Python, Larry Hastings et son équipe de développeurs ont ainsi mis sur pied :
- un nouveau module de programmation asynchrone (PEP 3156) nommé asyncio ;
- Ensurepip, un installeur du programme pip (PEP 453) ;
- Enum, une prise en charge des types d’énumération (PEP 435) ;
- Pathlib, une API orientée objet de manipulation de chemins du système de fichiers (PEP 428) ;
- Selectors, un multiplexage d’entrées‐sorties haut niveau et efficace, basé sur les primitives du module select et faisant parti de la PEP 3156 ;
- Statistics, des fonctions pour calculer des statistiques mathématiques de données numériques (PEP 450) ;
- tracemalloc pour tracer les allocations mémoires de Python (PEP 454).
Au-delà de ces nouveaux modules, Python 3.4 se distingue aussi par de nouvelles fonctionnalités qui viennent corriger les insuffisances de la dernière version. Les fichiers et sockets nouvellement créés sont par exemple marqués comme « non héritables », évitant ainsi de les passer aux processus fils, ce qui était la cause de nombreux problèmes et failles de sécurité listés dans la PEP 446.
Une nouvelle option en ligne de commande pour lancer Python dans un mode isolé du système est désormais disponible. Enfin, la gestion des codecs et le format de sérialisation marshal ont été améliorés et la complétion des commandes par la touche de tabulation est maintenant activée par défaut dans l’interpréteur interactif.
Des améliorations significatives ont été apportées à certains modules. Un nouveau protocole de sérialisation pour le module Pickle (PEP 3154) plus compact et permettant de sérialiser des objets qui ne pouvaient pas l’être avec Python 3.3 a été adopté. Les modules inspect et pydoc sont désormais capables de faire de l’introspection de manière correcte sur une plus grande variété d’objets « callables » (qu’on peut appeler comme une fonction), ce qui améliore la sortie de la commande help() dans l’interpréteur interactif de Python. L’API du module ipaddress a aussi été déclarée stable.
Python 3.4 n’est pas resté en marge d’un renforcement de la sécurité de la part des développeurs. Une nouvelle fonction de hachage sûre nommée SipHash est dorénavant utilisée par défaut. Le module multiprocessing a une nouvelle option pour éviter d’utiliser os.fork() sous UNIX : les modes spawn et forkserver sont plus sûrs, car ils évitent de partager des données avec les processus fils.
Sous Windows, les processus fils n’héritent plus de tous les handles parents, uniquement ceux qui sont nécessaires sont hérités. Tous les modules de la bibliothèque standard qui gèrent la SSL prennent maintenant en compte la validation du certificat serveur, y compris la validation du nom d’hôte et la vérification de la liste de révocation de certificats W (Certificate Revocation Lists). Il faut noter qu’une amélioration de l’implémentation CPython Safe object finalization (PEP 442) a été aussi faite.
Alors qu’initialement, la date de sortie était prévue pour le 22 février 2014, il a été choisi de repousser la sortie pour corriger les bogues majeurs, plutôt que de publier une version boguée. Comme d’habitude, l’ajout de nouvelles fonctionnalités était proscrit pendant deux mois dans la branche de développement principale (« default »).
Une rencontre mondiale Python regroupant plusieurs milliers de développeurs aura lieu du 9 avril au 17 avril prochain à Montréal. Les nouveautés de Python 3.4 seront présentées, et une discussion sera menée autour des nouveaux développements. Le plus grand défi est de rendre plus en plus de modules compatibles.
Source : blog Python
Et vous ?
Que pensez-vous des nouvelles fonctionnalités ?