Mantenedor do sistema de controle de versões conduziu do trabalho de tradução do projeto do Python 2 para o Python 3. Apesar das primeiras tentativas de portabilidade terem sido feitas ainda em 2008, e a adaptação para o Python 3 ter começado em modo acelerado em 2015, a plena capacidade de uso do Python 3 foi realizada apenas na última versão do Mercurial 5.2.
As previsões sobre a estabilidade da porta para o Python 3 são preocupantes. Em particular, espera-se que, ao longo dos próximos anos, erros aleatórios surjam no código, uma vez que os testes não cobrem 100% da base de código, e muitos problemas não são visíveis na análise estática, manifestando-se apenas em tempo de execução. Além disso, muitos complementos e extensões de terceiros ainda não foram traduzidos para o Python 3.
Como na portabilidade foi decidido adaptar gradualmente o código para o Python 3, mantendo suporte ao Python 2, o código acumulou uma série de gambiarras para compatibilizar Python 2 e 3, que após a descontinuação do suporte ao Python 2 precisarão ser limpas.
Comentando sobre a situação do Python 3, o mantenedor do Mercurial acredita que a decisão de promover uma mudança incompatível do Python 3 e impô-lo como uma nova linguagem mais correta, na ausência de melhorias significativas e relevantes para os desenvolvedores, foi um grande erro que causou danos ao comunidade e é um exemplo de como grandes projetos não devem agir. Em vez de aumentar gradualmente a funcionalidade e permitir a adaptação incremental de aplicativos, com o lançamento do Python 3, os desenvolvedores foram forçados a reescrever código e gastar recursos para manter ramificações separadas para Python 2 e Python 3. Apenas sete anos após o lançamento do Python 3.0, no Python 3.5, foram implementados recursos que suavizaram o processo de transição e garantiram o funcionamento de uma única base de código com Python 2 e Python 3.
Fonte: opennet.ru
