Mainteneur du système de gestion de version a conclu du travail de traduction du projet de Python 2 à Python 3. Bien que les premières tentatives de portage aient été entreprises dès 2008, et qu'une adaptation accélérée pour fonctionner avec Python 3 ait commencé en 2015, la possibilité d'utilisation complète de Python 3 n'a été réalisée que dans la dernière version de Mercurial 5.2.
Les prévisions concernant la stabilité du port pour Python 3 sont peu encourageantes. En particulier, il est prévu que pendant plusieurs années, des bugs aléatoires apparaissent dans le code, car les tests ne couvrent pas 100 % de la base de code, et de nombreux problèmes ne sont pas détectables par analyse statique et ne se manifestent qu'à l'exécution. De plus, de nombreux modules et extensions tiers restent non portés vers Python 3.
Étant donné qu'il a été décidé lors du portage d'adapter progressivement le code à Python 3 tout en gardant le support de Python 2, le code a accumulé de nombreux hacks pour faire coexister Python 2 et 3, qui devront être éliminés après la fin du support de Python 2.
En commentant la situation avec Python 3, le mainteneur de Mercurial estime que la décision de promouvoir une rupture de compatibilité avec Python 3 et de l'imposer comme un nouveau langage plus correct, sans améliorations révolutionnaires pertinentes pour les développeurs, a été une grande erreur causant beaucoup de tort à la communauté et servant d'exemple de ce qu'il ne faut pas faire pour de grands projets. Au lieu d'une augmentation progressive des fonctionnalités et de permettre une adaptation incrémentale des applications, à la sortie de Python 3, les développeurs ont été contraints de réécrire le code et de dépenser des ressources pour maintenir des branches distinctes pour Python 2 et Python 3. Ce n'est qu'après sept ans suivant la sortie de Python 3.0 que des fonctionnalités ont été mises en œuvre dans Python 3.5 qui facilitaient le processus de transition et assuraient le fonctionnement d'une base de code unique avec Python 2 et Python 3.
Source : opennet.ru
