Der Preis für die Migration von Mercurial auf Python 3 kann eine Spur unerwarteter Fehler sein.

Betreuer des Versionskontrollsystems Quecksilber- Lass mich runter Ergebnis Arbeiten an der Übertragung des Projekts von Python 2 auf Python 3. Obwohl die ersten Portierungsversuche bereits im Jahr 2008 unternommen wurden und die beschleunigte Anpassung für die Arbeit mit Python 3 im Jahr 2015 begann, wurde die volle Fähigkeit zur Verwendung von Python 3 erst in letzter Zeit implementiert Zweig von Mercurial 5.2.

Prognosen zur Stabilität der Portierung für Python 3 sind enttäuschend. Insbesondere ist zu erwarten, dass im Laufe mehrerer Jahre zufällige Fehler im Code auftauchen, da Tests nicht 100 % der Codebasis abdecken und viele Probleme bei der statischen Analyse unsichtbar sind und erst zur Laufzeit auftreten. Darüber hinaus sind viele Add-ons und Erweiterungen von Drittanbietern noch nicht in Python 3 übersetzt.
Da während der Portierung beschlossen wurde, den Code schrittweise an Python 3 anzupassen und gleichzeitig die Unterstützung für Python 2 beizubehalten, erhielt der Code viele Hacks zur Kombination von Python 2 und 3, die nach dem Ende der Unterstützung für Python 2 bereinigt werden müssen.

In seinem Kommentar zur Situation mit Python 3 ist der Mercurial-Betreuer der Ansicht, dass die Entscheidung, das interoperabilitätsschädigende Python 3 zu fördern und es als neue, korrektere Sprache einzuführen, in Ermangelung bahnbrechender, für Entwickler relevanter Verbesserungen ein großer Fehler war Es schadet der Gemeinschaft sehr und ist ein Beispiel dafür, dass dies bei großen Projekten nicht der Fall sein muss. Anstatt schrittweise Funktionalitäten aufzubauen und die schrittweise Anpassung von Anwendungen zu ermöglichen, zwang die Veröffentlichung von Python 3 Entwickler dazu, Code neu zu schreiben und Ressourcen für die Pflege separater Zweige für Python 2 und Python 3 aufzuwenden. Dies geschah erst sieben Jahre nach der Veröffentlichung von Python 3.0 Mit Python 3.5 wurden Funktionen eingeführt, um den Übergangsprozess zu vereinfachen und sicherzustellen, dass sowohl Python 2 als auch Python 3 auf derselben Codebasis ausgeführt werden.

Source: opennet.ru

Kommentar hinzufügen