Desarrolladores del proyecto Python propuesta (PEP 594) para realizar una limpieza significativa de la biblioteca estándar. Se propone la eliminación de la biblioteca estándar de Python tanto de características claramente obsoletas y especializadas como de componentes que tienen problemas arquitectónicos y que no se pueden unificar para todas las plataformas.
Por ejemplo, se propone excluir de la biblioteca estándar módulos como crypt (no disponible para Windows y dependencia de la disponibilidad de algoritmos de hash de las bibliotecas del sistema), cgi (arquitectura no óptima, se requiere iniciar un nuevo proceso en cada solicitud), imp (se recomienda usar importlib), pipes (se recomienda usar el módulo subprocess), nis (se recomienda usar NSS, LDAP o Kerberos/GSSAPI), spwd (no se recomienda trabajar directamente con la base de datos de cuentas). También se han marcado para eliminación los módulos binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib y parser.
De acuerdo con el plan propuesto, en Python 3.8 se planea marcar los módulos mencionados como obsoletos, en Python 3.8 se comenzará a emitir una advertencia, y en Python 3.10 se eliminarán de los repositorios de CPython.
Se planea eliminar el módulo parser en la versión 3.9, ya que se ha marcado como obsoleto desde el lanzamiento de Python 2.5, y el módulo macpath en la rama 3.8. Tras la eliminación de la composición principal, el código se trasladará a un repositorio separado legacylib y su futuro dependerá del interés de los miembros de la comunidad. Se espera que la rama Python 3.9 se mantenga hasta 2026, lo que proporcionará suficiente tiempo para migrar proyectos a alternativas externas.
Inicialmente, también se propusieron para eliminación los módulos ftplib, optparse, getopt, colorsys, fileinput, lib2to3 y wave, pero se decidió mantenerlos en la biblioteca estándar por el momento, ya que son ampliamente utilizados y siguen siendo relevantes a pesar de la existencia de alternativas más avanzadas o vinculadas a características específicas de los sistemas operativos.
Recordemos que, inicialmente, el proyecto Python utiliza el enfoque de 'baterías incluidas', donde la biblioteca estándar ofrece un conjunto extenso de funciones para diversas áreas de aplicación. Entre las ventajas de este enfoque se encuentran la simplificación del mantenimiento de proyectos en 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 fuentes de vulnerabilidades en las aplicaciones que los utilizan. Si las funciones están en la biblioteca estándar, solo es necesario controlar el estado del proyecto principal. Al descomponer la biblioteca estándar, los desarrolladores deben utilizar módulos de terceros, cuya vulnerabilidad debe ser controlada por separado. Con un alto grado de fragmentación y un gran número de dependencias, surge el riesgo de ataques a través de la compromisión de la infraestructura de los desarrolladores de módulos.
Por otro lado, cada módulo adicional en la biblioteca estándar requiere recursos del equipo de desarrolladores de Python para su mantenimiento. La biblioteca ha acumulado una gran cantidad de funciones duplicadas y redundantes, cuya eliminación podría reducir los costos de mantenimiento. A medida que avanza el catálogo y se simplifica el proceso de instalación y carga de paquetes adicionales, el uso de módulos externos se ha vuelto tan habitual como el uso de funciones integradas.
Cada vez más desarrolladores están utilizando reemplazos externos más funcionales para los módulos estándar, por ejemplo, utilizan el módulo lxml en lugar de xml. La eliminación de módulos obsoletos de la biblioteca estándar aumentará la popularidad de las alternativas activamente desarrolladas por la comunidad. Además, reducir la biblioteca estándar llevará a una disminución en el tamaño de la entrega base, lo que es relevante al usar Python en plataformas embebidas con espacio de almacenamiento limitado.
Fuente: opennet.ru
