Desenvolvedores do projeto Python proposta (PEP 594) para realizar uma limpeza significativa na biblioteca padrão. A remoção da biblioteca padrão do Python propõe tanto funcionalidades consideradas obsoletas e de nicho quanto componentes que apresentam problemas arquitetônicos e que não podem ser unificados para todas as plataformas.
Por exemplo, a proposta sugere a exclusão de módulos como crypt (indisponível para Windows e a dependência da disponibilidade de algoritmos de hashing em bibliotecas do sistema), cgi (arquitetura subótima, requer a execução de um novo processo para cada solicitação), imp (recomendado usar importlib), pipes (recomendado usar o módulo subprocess), nis (recomendado usar NSS, LDAP ou Kerberos/GSSAPI), spwd (não recomendado trabalhar diretamente com o banco de dados de contas). Os módulos binhex, uu, xdrlib também estão marcados para remoção,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib e parser.
De acordo com o plano proposto, no Python 3.8 os módulos acima mencionados estão programados para serem marcados como obsoletos, no Python 3.8 começam a gerar avisos e no Python 3.10 serão removidos dos repositórios CPython.
O módulo parser está programado para ser removido na versão 3.9, uma vez que foi marcado como obsoleto já na versão Python 2.5, enquanto o módulo macpath será removido na versão 3.8. Após a remoção da composição principal, o código será transferido para um repositório separado legacylib e seu destino dependerá do interesse da comunidade. Espera-se que a versão Python 3.9 seja mantida até 2026, dando assim tempo suficiente para a migração dos projetos para alternativas externas.
Inicialmente, também foram propostos para remoção os módulos ftplib, optparse, getopt, colorsys, fileinput, lib2to3 e wave, mas decidiu-se mantê-los na biblioteca padrão, pois são amplamente utilizados e continuam relevantes, apesar da existência de alternativas mais avançadas ou da ligação a funcionalidades específicas dos sistemas operacionais.
Lembramos que, originalmente, o projeto Python adota a abordagem "as baterias estão incluídas", na qual uma ampla gama de funções para diferentes áreas de aplicação é oferecida na biblioteca padrão. Entre as vantagens dessa abordagem estão a simplificação da manutenção dos projetos em Python e o rastreamento da segurança dos módulos utilizados nos projetos. Vulnerabilidades nos módulos frequentemente se tornam fontes de problemas nas aplicações que os utilizam. Caso as funções estejam inclusas na biblioteca padrão, basta controlar o estado do projeto principal. Quando a biblioteca padrão é fragmentada, os desenvolvedores precisam usar módulos de terceiros, cujas vulnerabilidades devem ser monitoradas separadamente. Com um alto grau de fragmentação e um grande número de dependências, existe o risco de ataques através da comprometimento da infraestrutura dos desenvolvedores dos módulos.
Por outro lado, cada módulo adicional na biblioteca padrão exige recursos da equipe de desenvolvedores do Python para manutenção. A biblioteca acumulou um grande número de funções duplicadas e desnecessárias, que, se excluídas, podem reduzir os custos de manutenção. À medida que o catálogo evolui e o processo de instalação e download de pacotes adicionais se torna mais simples, o uso de módulos externos hoje é tão comum quanto o de funções embutidas.
Cada vez mais, os desenvolvedores utilizam substituições externas mais funcionais para os módulos padrão, como usar o módulo lxml em vez de xml. A remoção de módulos abandonados da biblioteca padrão pode aumentar a popularidade de alternativas ativamente desenvolvidas pela comunidade. Além disso, a redução da biblioteca padrão resultará em uma diminuição do tamanho do pacote básico, o que é relevante ao utilizar Python em plataformas embarcadas com espaço de armazenamento limitado.
Fonte: opennet.ru
