Mantenitore del sistema di controllo delle versioni ha deluso del lavoro di traduzione del progetto da Python 2 a Python 3. Nonostante i primi tentativi di porting siano stati fatti già nel 2008, e che l'adattamento per il funzionamento con Python 3 sia iniziato in modalità accelerata nel 2015, la piena possibilità di utilizzo di Python 3 è stata realizzata solo nell'ultima versione di Mercurial 5.2.
Le previsioni sulla stabilità del porting per Python 3 sono scoraggianti. In particolare, si prevede che nei prossimi anni nel codice emergeranno errori casuali, poiché i test non coprono il 100% della base di codice e molti problemi non sono evidenti nell'analisi statica e si manifestano solo in fase di esecuzione. Inoltre, molti componenti aggiuntivi e estensioni di terze parti rimangono non tradotti in Python 3.
Poiché durante il porting è stata presa la decisione di adattare gradualmente il codice a Python 3, mantenendo il supporto per Python 2, il codice si è arricchito di numerosi hack per unire Python 2 e 3, che dopo la fine del supporto per Python 2 dovranno essere eliminati.
Commentando la situazione con Python 3, il mantenitore di Mercurial ritiene che la decisione di sostenere una rottura della compatibilità con Python 3 e di imporlo come un nuovo linguaggio più corretto, in assenza di miglioramenti dirompenti attuali per gli sviluppatori, sia stata una grande errore, causando notevoli danni alla comunità e fungendo da esempio di cosa non dovrebbero fare i grandi progetti. Invece di aumentare gradualmente le funzionalità e offrire la possibilità di un adattamento incrementale delle applicazioni, con il rilascio di Python 3 gli sviluppatori sono stati costretti a riscrivere il codice e a spendere risorse per mantenere rami separati per Python 2 e Python 3. Solo sette anni dopo il rilascio di Python 3.0, in Python 3.5 sono state realizzate le funzionalità che hanno reso più fluido il processo di transizione e garantito il funzionamento di un'unica base di codice con Python 2 e Python 3.
Fonte: opennet.ru
