Il manutentore del sistema di gestione delle versioni ha concluso di traduzione del progetto da Python 2 a Python 3. Sebbene i primi tentativi di porting siano stati effettuati nel 2008 e l'adattamento per Python 3 sia iniziato in modo accelerato nel 2015, la piena funzionalità di utilizzo di Python 3 è stata realizzata solo nell'ultima versione di Mercurial 5.2.
Le previsioni sulla stabilità del porting per Python 3 non sono encouragevoli. In particolare, si stima che nel codice emergeranno errori casuali per diversi anni, poiché i test non coprono il 100% della base di codice e molti problemi non sono visibili mediante analisi statica, ma si manifestano solo durante l'esecuzione. Inoltre, molte estensioni e plug-in di terze parti rimangono non portati su 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 è diventato infestato da numerosi hack per la compatibilità tra Python 2 e 3, che dovranno essere ripuliti una volta che il supporto per Python 2 cesserà.
Commentando la situazione con Python 3, il maintainer di Mercurial ritiene che la decisione di promuovere la rottura della compatibilità di Python 3 e di imporlo come un nuovo linguaggio più corretto, in assenza di miglioramenti significativi per gli sviluppatori, sia stata un grande errore che ha causato notevoli danni alla comunità ed è un esempio di ciò che grandi progetti non dovrebbero fare. Invece di un incremento graduale delle funzionalità e la possibilità di un adattamento incrementale delle applicazioni, il rilascio di Python 3 ha costretto gli sviluppatori 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 implementate funzionalità che hanno consentito di agevolare il processo di transizione e garantire il funzionamento di un'unica base di codice con Python 2 e Python 3.
Fonte: opennet.ru
