Le prix de la migration de Mercurial vers Python 3 peut être une traînée d'erreurs inattendues.

Responsable du système de contrôle de version Mercuriel laisse moi tomber résultat travailler sur le transfert du projet de Python 2 vers Python 3. Malgré le fait que les premières tentatives de portage ont été faites en 2008 et que l'adaptation accélérée pour travailler avec Python 3 a commencé en 2015, la pleine capacité d'utilisation de Python 3 n'a été implémentée que dans le dernier branche de Mercurial 5.2.

Les prédictions sur la stabilité du portage pour Python 3 sont décevantes. En particulier, on s'attend à ce que des erreurs aléatoires apparaissent dans le code au cours de plusieurs années, car les tests ne couvrent pas 100 % de la base de code et de nombreux problèmes sont invisibles lors de l'analyse statique et n'apparaissent qu'au moment de l'exécution. De plus, de nombreux modules complémentaires et extensions tiers ne sont pas traduits dans Python 3.
Étant donné que lors du portage, il a été décidé d'adapter progressivement le code à Python 3, tout en conservant le support de Python 2, le code a acquis de nombreux hacks pour combiner Python 2 et 3, qui devront être nettoyés après la fin du support de Python 2.

Commentant la situation avec Python 3, le responsable de Mercurial estime que la décision de promouvoir Python 3, qui rompt l'interopérabilité, et de l'imposer comme un nouveau langage plus correct, en l'absence d'améliorations révolutionnaires pertinentes pour les développeurs, a été une grave erreur qui a causé un grand préjudice à la communauté et constitue un exemple de la nécessité de ne pas faire de grands projets. Au lieu de créer progressivement des fonctionnalités et de permettre aux applications d'être personnalisées de manière incrémentale, la sortie de Python 3 a obligé les développeurs à réécrire le code et à consacrer des ressources au maintien de branches distinctes pour Python 2 et Python 3. Ce n'est que sept ans après la sortie de Python 3.0 que Python 3.5 a introduit des fonctionnalités pour faciliter le processus de transition et garantir que la même base de code exécute à la fois Python 2 et Python 3.

Source: opennet.ru

Ajouter un commentaire