Python за .Net възкръсва от мъртвите

Разработката на IronPython, реализация на Python, която се изпълнява на Common Language Runtime (CLR) на .Net framework, започва да се променя благодарение на проекта, който наскоро смени ръцете си на нова водеща разработка.

Джеф Харди, бивш водещ разработчик на IronPython, потвърди прехода в пощенския списък на потребителите на Ironpython по-рано този месец. „По много причини в момента просто нямам време да насоча заслужаваното внимание на IronPython,“ пише Харди, „така че предавам контрола върху проекта на [колеги, сътрудници на проекта] Алекс Ърл и Бенедикт Егърс.“

Python за .Net и обратно

IronPython, написан на C #, не е предназначен само за изпълнение на стокови Python програми. Той може да осигури на програмистите на Python мост към съществуващи .Net приложения и обекти. Най-доброто от всичко е, че тези обекти могат да бъдат импортирани и обработвани със същия синтаксис и идиоми като родните обекти на Python.

Развитието на IronPython несъмнено се забави през последните няколко години. Последното голямо издание беше за Python 2.7.5, в края на 2014 г. Python 3 не беше поддържан от IronPython - основен недостатък, тъй като Python 2 вече няма да се поддържа от 2020 г. и Python 3 е утвърденият наследник.

По време на среща в сайта за чат за разработчици Gitter, Earl, Eggers и други хешираха най-неотложните проблеми, пред които е изправен проектът, докато върви напред: какво да правим с изключителните проблеми с IronPython в CodePlex; какъв график на издаване да се приложи; и каква пътна карта да измислим за IronPython 3.

Друг въпрос, който възникна в дискусиите, беше как да се приложи поддръжка за библиотеки на Python, които използват разширения C. Ако IronPython иска да има възможно най-широка аудитория, това не е опция. Много основни библиотеки на Python, като Numpy, използват разширения C за скорост и в идеалния случай те трябва да работят както е в IronPython, без да е необходимо да бъдат прекомпилирани.

Добрата новина е, че в тази област вече е свършена известна работа, а именно Ironclad, проект, създаден да позволи на компилираните разширения на CPython да работят както е в IronPython. Лошата новина е, че проектът не е виждал много работа от дълго време и ще трябва да бъде сериозно преработен, за да бъде полезен за съвременния Python.

От рубини и GIL

Друг проблем, който възникна, беше как да се справим с подобен проект, обработен от същия екип: IronRuby, който е .Net реализация на Ruby, както подсказва името. Двата езика са разработени съвместно, тъй като произхождат от едни и същи усилия в Microsoft около Dynamic Language Runtime и остават в непосредствена близост, след като през 2010 г. Microsoft ги отделя в усилията на общността.

Планът е да направи IronRuby собствен проект, който да привлече собствена публика за разработчици. IronPython 2 също ще продължи да се разработва като дискретен проект.

Бъдещото развитие на IronPython може да се окаже ползотворно, като предостави начин за осъществяване на дългогодишната мечта за бързо, многоядрено приятелско изпълнение на Python. IronPython няма Global Interpreter Lock (GIL), характеристика на много реализации на Python, за която се обвинява, че е бариера за висока производителност.

Въпреки това, фактът, че IronPython няма GIL, не го прави автоматично по-бърз; някои тестове на IronPython са по-добри от CPython, но други са значително по-лоши. Засега простото ускоряване на IronPython с текущите клонове на Python, подобни на 2 и 3, би трябвало да е достатъчно мисия.