Un nettoyage majeur de la bibliothèque standard Python est prévu

Développeurs de projets Python ont publié proposition (PEP 594) de faire un nettoyage majeur de la bibliothèque standard. Les capacités et les composants clairement obsolètes et hautement spécialisés qui présentent des problèmes architecturaux et ne peuvent pas être unifiés pour toutes les plates-formes sont proposés à la suppression de la bibliothèque standard Python.

Par exemple, il est proposé d'exclure de la bibliothèque standard des modules tels que crypt (indisponibilité pour Windows et dépendance de la disponibilité des algorithmes de hachage sur les bibliothèques système), cgi (architecture non optimale, nécessite le lancement d'un nouveau processus pour chaque requête), imp (il est recommandé d'utiliser importlib), pipes (il est recommandé d'utiliser le module subprocess), nis (il est recommandé d'utiliser NSS, LDAP ou Kerberos/GSSAPI), spwd (il n'est pas recommandé de travailler directement avec la base de données de comptes). Les modules binhex, uu, xdrlib, sont également marqués pour suppression.
aifc,
opération audio,
tronçon
imghdr,
ossaudiodev,
sndhdr,
sunau
chat asynchrone,
asynchrone,
cgitb,
smtpd
nntplib, macpath,
formateur, msilib et analyseur.

Le plan proposé consiste à rendre obsolètes les modules ci-dessus dans Python 3.8, à émettre un avertissement dans Python 3.8 et à les supprimer des référentiels CPython dans Python 3.10.
Le module analyseur devrait être supprimé dans la version 3.9, car il était obsolète dans la version Python 2.5, et le module macpath dans la branche 3.8. Après avoir été supprimé du code principal, le code sera déplacé vers un référentiel Legacylib distinct et son sort dépendra de l'intérêt des membres de la communauté. La branche Python 3.9 devrait être prise en charge jusqu'en 2026, ce qui laissera suffisamment de temps aux projets pour migrer vers des alternatives externes.

Initialement, les modules ftplib, optparse, getopt, colorsys, fileinput, lib2to3 et wave ont également été proposés à la suppression, mais il a été décidé de les laisser pour l'instant dans la bibliothèque standard, car ils sont répandus et restent pertinents, malgré la présence d'alternatives ou de liaisons plus avancées à des capacités spécifiques des systèmes d'exploitation.

Rappelons que le projet Python a initialement adopté une approche « batteries incluses », offrant un riche ensemble de fonctions dans la bibliothèque standard pour une variété d'applications. Parmi les avantages de cette approche figure la simplification de la maintenance des projets Python et le suivi de la sécurité des modules utilisés dans les projets. Les vulnérabilités des modules deviennent souvent une source de vulnérabilités dans les applications qui les utilisent. Si les fonctions sont incluses dans la bibliothèque standard, il suffit de surveiller l'état du projet principal. Lors du fractionnement de la bibliothèque standard, les développeurs sont tenus d'utiliser des modules tiers, dont les vulnérabilités dans chacun doivent être surveillées séparément. Avec un degré élevé de fragmentation et un grand nombre de dépendances, il existe une menace d'attaques compromettant l'infrastructure des développeurs de modules.

D'autre part, chaque module supplémentaire de la bibliothèque standard nécessite des ressources de la part de l'équipe de développement Python pour sa maintenance. La bibliothèque a accumulé un grand nombre de fonctions de duplication et redondantes, ce qui peut réduire les coûts de maintenance. Au fur et à mesure que le catalogue évolue PyPI et en simplifiant le processus d'installation et de téléchargement de packages supplémentaires, l'utilisation de modules externes est désormais devenue aussi courante que les fonctions intégrées.

De plus en plus de développeurs utilisent des remplacements externes plus fonctionnels pour les modules standard, par exemple en utilisant le module lxml au lieu de xml. La suppression des modules abandonnés de la bibliothèque standard augmentera la popularité des alternatives activement développées par la communauté. De plus, la réduction de la bibliothèque standard entraînera une réduction de la taille de la distribution de base, ce qui est important lors de l'utilisation de Python sur des plateformes embarquées avec une taille de stockage limitée.

Source: opennet.ru

Ajouter un commentaire