Está prevista una limpieza importante de la biblioteca estándar de Python

Desarrolladores de proyectos Python publicado propuesta (PEP 594) para realizar una limpieza importante de la biblioteca estándar. Tanto las capacidades claramente obsoletas como las altamente especializadas y los componentes que tienen problemas arquitectónicos y no se pueden unificar para todas las plataformas se ofrecen para su eliminación de la biblioteca estándar de Python.

Por ejemplo, se propone excluir de la biblioteca estándar módulos como crypt (indisponibilidad para Windows y dependencia de la disponibilidad de algoritmos hash en las bibliotecas del sistema), cgi (arquitectura no óptima, requiere iniciar un nuevo proceso para cada solicitud), imp (se recomienda usar importlib), pipes (se recomienda usar el módulo de subproceso), nis (se recomienda usar NSS, LDAP o Kerberos/GSSAPI), spwd (no se recomienda trabajar directamente con la base de datos de la cuenta). Los módulos binhex, uu, xdrlib también están marcados para su eliminación.
aifc,
operación de audio,
pedazo
imghdr,
ossaudiodev,
sndhdr,
sunau
chat asíncrono,
asíncore,
cgitb,
smtpd
nntplib, macpath,
formateador, msilib y analizador.

El plan propuesto es desaprobar los módulos anteriores en Python 3.8, emitir una advertencia en Python 3.8 y eliminarlos de los repositorios de CPython en Python 3.10.
Está previsto eliminar el módulo analizador en la versión 3.9, ya que quedó obsoleto en la versión Python 2.5, y el módulo macpath en la rama 3.8. Después de ser eliminado del código principal, el código se moverá a un repositorio Legacylib separado y su destino dependerá del interés de los miembros de la comunidad. Se espera que la rama Python 3.9 sea compatible hasta 2026, lo que brindará tiempo suficiente para que los proyectos migren a alternativas externas.

Inicialmente, también se propuso eliminar los módulos ftplib, optparse, getopt, coloursys, fileinput, lib2to3 y wave, pero se decidió dejarlos como parte de la biblioteca estándar por ahora, ya que están muy extendidos y siguen siendo relevantes, a pesar de la presencia. de alternativas más avanzadas o vinculaciones a capacidades específicas de los sistemas operativos.

Recuerde que el proyecto Python inicialmente adoptó un enfoque de "baterías incluidas", ofreciendo un amplio conjunto de funciones en la biblioteca estándar para una variedad de aplicaciones. Entre las ventajas de este enfoque está la simplificación del mantenimiento de proyectos Python y el seguimiento de la seguridad de los módulos utilizados en los proyectos. Las vulnerabilidades en los módulos a menudo se convierten en una fuente de vulnerabilidades en las aplicaciones que los utilizan. Si las funciones están incluidas en la biblioteca estándar, basta con controlar el estado del proyecto principal. Al dividir la biblioteca estándar, los desarrolladores deben utilizar módulos de terceros, cuyas vulnerabilidades en cada uno de ellos deben monitorearse por separado. Con un alto grado de fragmentación y una gran cantidad de dependencias, existe la amenaza de ataques que comprometan la infraestructura de los desarrolladores de módulos.

Por otro lado, cada módulo adicional de la biblioteca estándar requiere recursos del equipo de desarrollo de Python para su mantenimiento. La biblioteca ha acumulado una gran cantidad de funciones duplicadas y redundantes, cuya eliminación puede reducir los costos de mantenimiento. A medida que se desarrolla el catálogo PyPI y simplificando el proceso de instalación y descarga de paquetes adicionales, el uso de módulos externos ahora se ha vuelto tan común como las funciones integradas.

Cada vez más desarrolladores utilizan reemplazos externos más funcionales para los módulos estándar, por ejemplo, utilizando el módulo lxml en lugar de xml. Eliminar módulos abandonados de la biblioteca estándar aumentará la popularidad de las alternativas desarrolladas activamente por la comunidad. Además, reducir la biblioteca estándar conducirá a una reducción en el tamaño de la distribución base, lo cual es importante cuando se usa Python en plataformas integradas con un tamaño de almacenamiento limitado.

Fuente: opennet.ru

Añadir un comentario