Ценой перевода Mercurial на Python 3 может стать шлейф непредвиденных ошибок
Мэйнтейнер системы управления версиями Mercurial подвёл итог работы по переводу проекта с Python 2 на Python 3. Несмотря на то, что первые попытки портирования были предприняты ещё в 2008 году, а в форсированном режиме адаптация для работы с Python 3 началась в 2015 году, полноценная возможность использования Python 3 была реализована только в последней ветке Mercurial 5.2.
Прогнозы о стабильности порта для Python 3 даются неутешительные. В частности, предполагается, что на протяжении нескольких лет в коде будут всплывать случайные ошибки, так как тесты не охватывают 100% кодовой базы, а многие проблемы незаметны при статическом анализе и проявляются только во время выполнения. Кроме того, остаются непереведёнными на Python 3 многие сторонние дополнения и расширения. Так как при портировании было принято решение постепенно адаптировать код на Python 3, сохраняя поддержку Python 2, код оброс множеством хаков для совмещения Python 2 и 3, которые после прекращения поддержки Python 2 придётся вычищать.
Комментируя ситуацию с Python 3 мэйнтейнер Mercurial считает, что решение по продвижению ломающего совместимость Python 3 и навязывание его как нового более правильного языка, при отсутствии актуальных для разработчиков прорывных улучшений, было большой ошибкой, причинившей большой вред сообществу и являющейся примером того как не нужно поступать крупным проектам. Вместо постепенного наращивания функциональности и предоставления возможности инкрементальной адаптации приложений, при выпуске Python 3 разработчиков вынуждали переписывать код и тратить ресурсы на поддержание отдельных веток для Python 2 и Python 3. Лишь через семь лет после выпуска Python 3.0 в Python 3.5 были реализованы возможности, позволявшие сгладить процесс перехода и обеспечить работу одной кодовой базы с Python 2 и Python 3.
Источник: http://www.opennet.ru/opennews/art.shtml? num=52184
© OpenNet