El preu de migrar Mercurial a Python 3 pot ser un rastre d'errors inesperats.

Mantenidor del sistema de control de versions Mercurial m'ha defraudat el resultat treballar en la transferència del projecte de Python 2 a Python 3. Malgrat que els primers intents de portació es van fer el 2008 i l'adaptació accelerada per treballar amb Python 3 va començar el 2015, la capacitat total d'utilitzar Python 3 només es va implementar en els últims anys. branca de Mercurial 5.2.

Les prediccions sobre l'estabilitat del port per a Python 3 són decebedores. En particular, s'espera que els errors aleatoris apareguin al codi al llarg de diversos anys, ja que les proves no cobreixen el 100% de la base del codi, i molts problemes són invisibles durant l'anàlisi estàtica i només apareixen en temps d'execució. A més, molts complements i extensions de tercers romanen sense traduir a Python 3.
Atès que durant la portació es va decidir adaptar gradualment el codi a Python 3, mantenint el suport per a Python 2, el codi va adquirir molts hacks per combinar Python 2 i 3, que s'hauran de netejar després que s'acabi el suport per a Python 2.

En comentar la situació amb Python 3, el mantenedor de Mercurial creu que la decisió de promoure el Python 3 que trenca la interoperabilitat i imposar-lo com un llenguatge nou i més correcte, en absència de millores innovadores rellevants per als desenvolupadors, va ser un gran error que va provocar un gran dany per a la comunitat i és un exemple de com no ho necessiten els grans projectes. En lloc de crear funcionalitats gradualment i permetre que les aplicacions es personalitzessin de manera incremental, el llançament de Python 3 va obligar els desenvolupadors a reescriure el codi i gastar recursos mantenint branques separades per a Python 2 i Python 3. No va ser fins set anys després del llançament de Python 3.0 que Python 3.5 va introduir funcions per suavitzar el procés de transició i assegurar-se que la mateixa base de codi executa tant Python 2 com Python 3.

Font: opennet.ru

Afegeix comentari