Цената на мигрирането на Mercurial към Python 3 може да бъде следа от неочаквани грешки.

Поддържащ система за контрол на версиите находчив ме разочарова доведе до работа по прехвърляне на проекта от 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.

Източник: opennet.ru

Добавяне на нов коментар