Maintainer des Versionsverwaltungssystems hat zusammengefasst der Arbeiten zur Übertragung des Projekts von Python 2 auf Python 3. Obwohl die ersten Portierungsversuche bereits 2008 unternommen wurden und die Anpassung für die Arbeit mit Python 3 im Jahr 2015 in einem beschleunigten Modus begann, wurde die vollständige Nutzung von Python 3 erst in der letzten Version von Mercurial 5.2 umgesetzt.
Die Prognosen zur Stabilität des Ports für Python 3 sind wenig ermutigend. Insbesondere wird angenommen, dass über einige Jahre hinweg im Code zufällige Fehler auftreten werden, da die Tests nicht 100 % des Codes abdecken und viele Probleme bei einer statischen Analyse nicht sichtbar sind und erst während der Ausführung auftreten. Darüber hinaus bleiben viele externe Erweiterungen und Plugins unübersetzt für Python 3.
Da beim Portieren die Entscheidung getroffen wurde, den Code schrittweise an Python 3 anzupassen und gleichzeitig die Unterstützung für Python 2 aufrechtzuerhalten, hat der Code zahlreiche Hacks angesammelt, um Python 2 und 3 zu kombinieren, die nach dem Ende der Unterstützung von Python 2 entfernt werden müssen.
In Bezug auf die Situation mit Python 3 ist der Maintainer von Mercurial der Meinung, dass es ein großer Fehler war, die Entscheidung zu treffen, die inkompatible Python 3-Version voranzutreiben und sie als neue, „bessere“ Sprache durchzusetzen, ohne aktuelle Durchbrüche, die für Entwickler von Vorteil sind. Dies hat der Gemeinschaft großen Schaden zugefügt und ist ein Beispiel dafür, wie große Projekte nicht gehandhabt werden sollten. Anstelle einer schrittweisen Erweiterung der Funktionalität und der Möglichkeit einer inkrementellen Anpassung von Anwendungen wurden die Entwickler mit der Veröffentlichung von Python 3 gezwungen, ihren Code neu zu schreiben und Ressourcen für die Unterstützung separater Branches für Python 2 und 3 aufzuwenden. Erst sieben Jahre nach der Veröffentlichung von Python 3.0 wurden in Python 3.5 Funktionen implementiert, die es ermöglichten, den Übergang zu erleichtern und eine einheitliche Codebasis sowohl für Python 2 als auch für Python 3 zu gewährleisten.
Quelle: opennet.ru
