Está prevista unha limpeza importante da biblioteca estándar de Python

Desenvolvedores de proxectos Python publicado proposta (PEP 594) para facer unha limpeza importante da biblioteca estándar. Tanto as capacidades como os compoñentes claramente obsoletos e altamente especializados que teñen problemas arquitectónicos e que non se poden unificar para todas as plataformas ofrécense para a súa eliminación da biblioteca estándar de Python.

Por exemplo, proponse excluír da biblioteca estándar módulos como crypt (non dispoñibilidade para Windows e dependencia da dispoñibilidade de algoritmos de hash nas bibliotecas do sistema), cgi (arquitectura non óptima, require o lanzamento dun novo proceso para cada solicitude), imp (recoméndase usar importlib), pipes (recoméndase utilizar o módulo de subprocesos), nis (recoméndase usar NSS, LDAP ou Kerberos/GSSAPI), spwd (non se recomenda traballar directamente coa base de datos da conta). Os módulos binhex, uu, xdrlib tamén están marcados para a súa eliminación.
aifc,
audioop,
anaco
imghdr,
ossaudiodev,
sndhdr,
sunau
asíncrono,
asíncrono,
cgitb,
smtpd
nntplib, macpath,
formateador, msilib e analizador.

O plan proposto é desaprobar os módulos anteriores en Python 3.8, emitir un aviso en Python 3.8 e eliminalos dos repositorios de CPython en Python 3.10.
Está previsto que se elimine o módulo analizador na versión 3.9, xa que estaba obsoleto na versión 2.5 de Python, e o módulo macpath na rama 3.8. Despois de ser eliminado do código principal, o código moverase a un repositorio legacylib separado e o seu destino dependerá do interese dos membros da comunidade. Espérase que a rama de Python 3.9 sexa compatible ata 2026, o que proporcionará tempo suficiente para que os proxectos migren a alternativas externas.

Inicialmente, tamén se propuxeron para a súa eliminación os módulos ftplib, optparse, getopt, colorsys, fileinput, lib2to3 e wave, pero decidiuse deixalos como parte da biblioteca estándar polo momento, xa que están moi estendidos e seguen sendo relevantes, a pesar da presenza. de alternativas máis avanzadas ou vinculacións a capacidades específicas dos sistemas operativos.

Lembre que o proxecto Python inicialmente adoptou un enfoque de "baterías incluídas", ofrecendo un rico conxunto de funcións na biblioteca estándar para unha variedade de aplicacións. Entre as vantaxes deste enfoque está a simplificación do mantemento de proxectos Python e o seguimento da seguridade dos módulos utilizados nos proxectos. As vulnerabilidades dos módulos adoitan converterse nunha fonte de vulnerabilidades nas aplicacións que as usan. Se as funcións están incluídas na biblioteca estándar, é suficiente para supervisar o estado do proxecto principal. Ao dividir a biblioteca estándar, os desenvolvedores están obrigados a utilizar módulos de terceiros, as vulnerabilidades de cada un dos cales deben supervisarse por separado. Cun alto grao de fragmentación e un gran número de dependencias, hai unha ameaza de ataques ao comprometer a infraestrutura dos desenvolvedores de módulos.

Por outra banda, cada módulo adicional da biblioteca estándar require recursos do equipo de desenvolvemento de Python para manter. A biblioteca acumula un gran número de funcións duplicadas e redundantes, eliminando as que poden reducir os custos de mantemento. A medida que se desenvolve o catálogo PyPI e simplificando o proceso de instalación e descarga de paquetes adicionais, o uso de módulos externos volveuse tan común como as funcións integradas.

Cada vez son máis os desenvolvedores que utilizan substitutos externos máis funcionais para módulos estándar, por exemplo, usando o módulo lxml en lugar de xml. Eliminar módulos abandonados da biblioteca estándar aumentará a popularidade das alternativas desenvolvidas activamente pola comunidade. Ademais, a redución da biblioteca estándar levará a unha redución do tamaño da distribución base, o que é importante cando se usa Python en plataformas integradas cun tamaño de almacenamento limitado.

Fonte: opennet.ru

Engadir un comentario