Ценой перевода Mercurial на Python 3 может стать шлейф непредвиденных ошибок
14 января 2020 года
Мэйнтейнер системы управления версиями 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.
Источники
[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.