Uma grande limpeza da biblioteca padrão Python está planejada

Desenvolvedores de projetos Python publicado proposta (PEP 594) para fazer uma grande limpeza na biblioteca padrão. Recursos e componentes claramente desatualizados e altamente especializados que apresentam problemas de arquitetura e não podem ser unificados para todas as plataformas são oferecidos para remoção da biblioteca padrão do Python.

Por exemplo, propõe-se excluir da biblioteca padrão módulos como crypt (indisponibilidade para Windows e dependência da disponibilidade de algoritmos de hash nas bibliotecas do sistema), cgi (arquitetura não ideal, requer o lançamento 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,
áudio,
pedaço
imghdr,
ossaudiodev,
sndhdr,
sunau
assíncrono,
assíncrono,
cgitb,
smtpd
nntplib, macpath,
formatador, msilib e analisador.

O plano proposto é descontinuar os módulos acima no Python 3.8, emitir um aviso no Python 3.8 e removê-los dos repositórios CPython no Python 3.10.
O módulo analisador está planejado para ser removido na versão 3.9, pois foi descontinuado na versão Python 2.5, e o módulo macpath na versão 3.8. Após ser removido do código principal, o código será movido para um repositório legadolib separado e seu destino dependerá do interesse dos membros da comunidade. Espera-se que o branch Python 3.9 tenha suporte até 2026, o que proporcionará tempo suficiente para que os projetos migrem para alternativas externas.

Inicialmente, os módulos ftplib, optparse, getopt, colorsys, fileinput, lib2to3 e wave também foram propostos para remoção, mas optou-se por deixá-los como parte da biblioteca padrão por enquanto, pois são difundidos e permanecem relevantes, apesar da presença de alternativas mais avançadas ou ligações a capacidades específicas de sistemas operacionais.

Lembre-se de que o projeto Python inicialmente adotou uma abordagem de “baterias incluídas”, oferecendo um rico conjunto de funções na biblioteca padrão para uma variedade de aplicações. Entre as vantagens dessa abordagem está a simplificação da manutenção de projetos Python e o monitoramento da segurança dos módulos utilizados nos projetos. Vulnerabilidades em módulos geralmente se tornam uma fonte de vulnerabilidades em aplicativos que os utilizam. Se as funções estiverem incluídas na biblioteca padrão, basta monitorar o estado do projeto principal. Ao dividir a biblioteca padrão, os desenvolvedores são obrigados a usar módulos de terceiros, e as vulnerabilidades em cada um deles devem ser monitoradas separadamente. Com alto grau de fragmentação e grande número de dependências, existe a ameaça de ataques por meio do comprometimento da infraestrutura dos desenvolvedores de módulos.

Por outro lado, cada módulo adicional na biblioteca padrão requer recursos da equipe de desenvolvimento Python para ser mantido. A biblioteca acumulou um grande número de funções duplicadas e redundantes, eliminando-as que podem reduzir os custos de manutenção. À medida que o catálogo se desenvolve PyPI e simplificando o processo de instalação e download de pacotes adicionais, o uso de módulos externos tornou-se tão comum quanto funções integradas.

Cada vez mais desenvolvedores estão usando substituições externas mais funcionais para módulos padrão, por exemplo, usando o módulo lxml em vez de xml. A remoção de módulos abandonados da biblioteca padrão aumentará a popularidade das alternativas desenvolvidas ativamente pela comunidade. Além disso, a redução da biblioteca padrão levará a uma redução no tamanho da distribuição base, o que é importante ao usar Python em plataformas embarcadas com tamanho de armazenamento limitado.

Fonte: opennet.ru

Adicionar um comentário