Menținător al sistemului de gestionare a versiunilor a concluzionat muncii de traducere a proiectului de la Python 2 la Python 3. Deși primele încercări de portare au fost efectuate încă din 2008, iar adaptarea pentru lucrul cu Python 3 a început într-un mod accelerat în 2015, funcționalitatea completă pentru utilizarea Python 3 a fost realizată abia în ultima ramură Mercurial 5.2.
Previziunile cu privire la stabilitatea portului pentru Python 3 sunt dezamăgitoare. În special, se estimează că în următorii câțiva ani, codul va genera erori sporadice, deoarece testele nu acoperă 100% din baza de cod, iar multe probleme rămân invizibile în analiza statică și se manifestă doar în timpul execuției. În plus, multe extensii și complementare externe rămân neportate pe Python 3.
Cum portarea a implicat decizia de a adapta treptat codul la Python 3, menținând suportul pentru Python 2, codul a acumulat o mulțime de hack-uri pentru a face posibilă colaborarea între Python 2 și 3, care vor trebui eliminate după încetarea suportului pentru Python 2.
Comentând situația cu Python 3, menținătorul Mercurial consideră că decizia de a promova o variantă care rupe compatibilitatea Python 3 și de a o impune ca fiind un limbaj nou și mai corect, în absența unor îmbunătățiri revoluționare relevante pentru dezvoltatori, a fost o mare greșeală care a cauzat daune semnificative comunității și este un exemplu de cum nu ar trebui să acționeze proiectele mari. În loc să crească treptat funcționalitatea și să ofere posibilitatea adaptării incrementale a aplicațiilor, la lansarea Python 3, dezvoltatorii au fost forțați să rescrie codul și să aloce resurse pentru a menține ramuri separate pentru Python 2 și Python 3. Abia șapte ani după lansarea Python 3.0, în Python 3.5 au fost implementate funcționalitățile care au permis să se netezescă procesul de tranziție și să se asigure funcționarea unei baze de cod unice atât cu Python 2, cât și cu Python 3.
Sursa: opennet.ro
