De prijs voor het migreren van Mercurial naar Python 3 kan een spoor van onverwachte fouten zijn.

Beheerder van het versiebeheersysteem kwikmiddel laat me vallen resultaat werken aan de overdracht van het project van Python 2 naar Python 3. Ondanks het feit dat de eerste pogingen tot portering al in 2008 werden ondernomen en de versnelde aanpassing voor het werken met Python 3 in 2015 begon, werd de volledige mogelijkheid om Python 3 te gebruiken pas in de laatste paar jaar geïmplementeerd. tak van Mercurial 5.2.

Voorspellingen over de stabiliteit van de port voor Python 3 zijn teleurstellend. Er wordt met name verwacht dat er in de loop van een aantal jaren willekeurige fouten in de code zullen opduiken, omdat tests niet 100% van de codebasis bestrijken en veel problemen onzichtbaar zijn tijdens statische analyse en pas tijdens runtime verschijnen. Bovendien blijven veel add-ons en extensies van derden onvertaald naar Python 3.
Omdat tijdens de portering werd besloten om de code geleidelijk aan aan te passen aan Python 3, terwijl de ondersteuning voor Python 2 behouden bleef, kreeg de code veel hacks om Python 2 en 3 te combineren, die zullen moeten worden opgeschoond nadat de ondersteuning voor Python 2 is beëindigd.

In zijn commentaar op de situatie met Python 3 is de beheerder van Mercurial van mening dat de beslissing om het interoperabiliteitsbrekende Python 3 te promoten en op te leggen als een nieuwe, correctere taal, bij gebrek aan baanbrekende verbeteringen die relevant zijn voor ontwikkelaars, een grote fout was die heeft geleid tot grote schade toebrengen aan de gemeenschap en is een voorbeeld van hoe grote projecten dit niet hoeven te doen. In plaats van geleidelijk functionaliteit op te bouwen en applicaties stapsgewijs aan te passen, dwong de release van Python 3 ontwikkelaars om code te herschrijven en middelen te besteden aan het onderhouden van aparte branches voor Python 2 en Python 3. Pas zeven jaar na de release van Python 3.0 Python 3.5 introduceerde functies om het transitieproces te versoepelen en ervoor te zorgen dat dezelfde codebasis zowel Python 2 als Python 3 draait.

Bron: opennet.ru

Voeg een reactie