Il prezzo della migrazione da Mercurial a Python 3 potrebbe essere una scia di errori imprevisti.

Manutentore del sistema di controllo della versione mutevole deludermi risultato lavorare sul trasferimento del progetto da Python 2 a Python 3. Nonostante il fatto che i primi tentativi di porting siano stati fatti nel 2008 e l'adattamento accelerato per lavorare con Python 3 sia iniziato nel 2015, la piena capacità di utilizzare Python 3 è stata implementata solo negli ultimi ramo di Mercurial 5.2.

Le previsioni sulla stabilità del port per Python 3 sono deludenti. In particolare si prevede che nel corso degli anni compaiano errori casuali nel codice, poiché i test non coprono il 100% della base di codice e molti problemi sono invisibili durante l'analisi statica e compaiono solo in fase di esecuzione. Inoltre, molti componenti aggiuntivi ed estensioni di terze parti rimangono non tradotti in Python 3.
Poiché durante il porting si è deciso di adattare gradualmente il codice a Python 3, pur mantenendo il supporto per Python 2, il codice ha acquisito molti hack per combinare Python 2 e 3, che dovranno essere ripuliti una volta terminato il supporto per Python 2.

Commentando la situazione con Python 3, il manutentore di Mercurial ritiene che la decisione di promuovere Python 3, rivoluzionario per l'interoperabilità, e di imporlo come un linguaggio nuovo e più corretto, in assenza di miglioramenti rivoluzionari rilevanti per gli sviluppatori, sia stato un grosso errore che ha causato grave danno alla comunità ed è un esempio di come i progetti non di grandi dimensioni debbano farlo. Invece di creare gradualmente funzionalità e consentire alle applicazioni di essere personalizzate in modo incrementale, il rilascio di Python 3 ha costretto gli sviluppatori a riscrivere il codice e a spendere risorse mantenendo rami separati per Python 2 e Python 3. Fu solo sette anni dopo il rilascio di Python 3.0 che Python 3.5 ha introdotto funzionalità per semplificare il processo di transizione e garantire che la stessa base di codice esegua sia Python 2 che Python 3.

Fonte: opennet.ru

Aggiungi un commento