Der Maintainer des Versionskontrollsystems gab der Arbeiten zur Übersetzung des Projekts von Python 2 auf Python 3. Obwohl die ersten Portierungsversuche bereits im Jahr 2008 unternommen wurden und die Anpassung für die Arbeit mit Python 3 im Jahr 2015 in einem beschleunigten Tempo begann, wurde die vollständige Nutzung von Python 3 erst in der letzten Version von Mercurial 5.2 realisiert.
Die Prognosen zur Stabilität des Ports für Python 3 sind wenig ermutigend. Insbesondere wird angenommen, dass im Code über mehrere Jahre hinweg sporadische Fehler auftreten werden, da die Tests nicht 100% der Code-Basis abdecken und viele Probleme bei der statischen Analyse unentdeckt bleiben und sich erst zur Laufzeit zeigen. Außerdem sind viele Drittanbieter-Erweiterungen und -Plugins nicht auf Python 3 portiert.
Da beim Portieren beschlossen wurde, den Code schrittweise auf Python 3 anzupassen und die Unterstützung für Python 2 beizubehalten, hat der Code eine Vielzahl von Hacks angesammelt, um Python 2 und 3 zu kombinieren, die nach dem Ende der Unterstützung für Python 2 bereinigt werden müssen.
In Bezug auf die Situation mit Python 3 ist der Maintainer von Mercurial der Meinung, dass die Entscheidung, eine inkompatible Version von Python 3 voranzutreiben und sie als neue, bessere Sprache aufzuzwingen, ohne bedeutende technologische Verbesserungen für Entwickler, ein großer Fehler war, der der Community erheblichen Schaden zugefügt hat. Dies ist ein Beispiel dafür, wie große Projekte nicht handeln sollten. Anstatt die Funktionalität schrittweise auszubauen und eine inkrementelle Anpassung der Anwendungen zu ermöglichen, wurden die Entwickler mit der Einführung von Python 3 gezwungen, ihren Code neu zu schreiben und Ressourcen für die Pflege separater Versionen für Python 2 und Python 3 aufzuwenden. Erst sieben Jahre nach der Veröffentlichung von Python 3.0 wurden mit Python 3.5 Funktionen implementiert, die den Übergang erleichterten und die Arbeit mit einer einzigen Codebasis für Python 2 und Python 3 ermöglichten.
Quelle: opennet.ru
