Programování

Python pro .Net vstává z mrtvých

Vývoj na IronPythonu, implementaci Pythonu, která běží na Common Language Runtime (CLR) .Net framework, dostává šanci díky projektu, který nedávno změnil ruce na nového vývojového vedoucího.

Jeff Hardy, bývalý vedoucí vývojář IronPython, potvrdil přechod na seznam uživatelů Ironpython uživatelů na začátku tohoto měsíce. „Z mnoha důvodů právě teď nemám čas věnovat IronPythonu pozornost, kterou si zaslouží,“ napsal Hardy, „takže předávám kontrolu nad projektem [spolupracovníkům projektu] Alexi Earlovi a Benediktovi Eggersovi.“

Python pro .Net a naopak

IronPython, napsaný v C #, není určen pouze ke spouštění skladových programů Pythonu. Může programátorům Pythonu poskytnout most k existujícím aplikacím a objektům .Net. Nejlepší ze všeho je, že tyto objekty lze importovat a zpracovávat se stejnou syntaxí a idiomy jako nativní objekty Pythonu.

Vývoj na IronPython se za posledních pár let nepochybně zpomalil. Poslední hlavní vydání bylo pro Python 2.7.5, na konci roku 2014. Python 3 nebyl IronPythonem podporován - hlavní nevýhoda, protože Python 2 již nebude od roku 2020 podporován a Python 3 je zavedeným nástupcem.

Na schůzce na vývojářském chatu Gitter, Earl, Eggers a další hashovali nejnaléhavější problémy, kterým projekt čelí, když se pohybuje vpřed: co dělat s vynikajícími problémy IronPython na CodePlex; jaký druh plánu vydání implementovat; a jaký druh cestovní mapy vymyslet pro IronPython 3.

Dalším problémem, který se objevil v diskusích, bylo, jak implementovat podporu pro knihovny Pythonu, které používají rozšíření C. Pokud má mít IronPython co nejširší publikum, není to volba. Mnoho hlavních knihoven Pythonu, jako je Numpy, používá pro rychlost rozšíření C a v ideálním případě by měly fungovat tak, jak jsou v IronPythonu, aniž by bylo nutné je znovu kompilovat.

Dobrou zprávou je, že v této oblasti již byla provedena nějaká práce, konkrétně Ironclad, projekt navržený tak, aby umožňoval kompilovaným rozšířením CPython pracovat tak, jak jsou, v IronPythonu. Špatnou zprávou je, že projekt už dlouho nezažil mnoho práce a bude muset být důkladně revidován, aby byl užitečný pro moderní Python.

Rubínů a GILů

Dalším problémem, který přišel, bylo, jak se vypořádat s podobným projektem zpracovávaným stejným týmem: IronRuby, což je .Net implementace Ruby, jak název napovídá. Oba jazyky byly vyvinuty společně, protože pocházely ze stejného úsilí v rámci Microsoftu kolem Dynamic Language Runtime a zůstaly v těsné blízkosti poté, co je společnost Microsoft v roce 2010 roztočila do úsilí řízeného komunitou.

V plánu je udělat z IronRuby vlastní projekt, který přiláká vlastní vývojářské publikum. IronPython 2 bude také nadále vyvíjen jako diskrétní projekt.

Budoucí vývoj IronPython se může ukázat jako plodný tím, že poskytuje způsob, jak splnit dlouholetý sen o rychlém běhu prostředí Python, který je vhodný pro více jader. IronPython nemá Global Interpreter Lock (GIL), což je rys mnoha implementací Pythonu, který je obviňován z toho, že je překážkou vysokého výkonu.

Skutečnost, že IronPython nemá žádný GIL, to automaticky nezrychluje; některé benchmarky IronPython jsou lepší než CPython, ale jiné jsou výrazně horší. Prozatím by mělo stačit jednoduše dostat IronPython na rychlost se současnými větvemi Pythonu, 2 i 3, dostatečnou misí.