Programovanie

Python pre .Net vstáva z mŕtvych

Vývoj na platforme IronPython, implementácii Pythonu, ktorá beží na platforme Common Language Runtime (CLR) .Net, dostáva ranu do náručia vďaka projektu, ktorý nedávno zmenil majiteľa na nového vývojového vodcu.

Jeff Hardy, bývalý vedúci vývojár IronPython, potvrdil prechod na zoznam adresátov používateľov Ironpython začiatkom tohto mesiaca. „Z mnohých dôvodov práve teraz nemám čas venovať IronPythonu potrebnú pozornosť,“ napísal Hardy, „takže odovzdávam kontrolu nad projektom [spolupracovníkom projektu] Alexovi Earlovi a Benediktovi Eggersovi.“

Python pre .Net a naopak

IronPython, napísaný v C #, nemá slúžiť iba na spustenie akciových programov Python. Môže programátorom Pythonu poskytnúť most k existujúcim aplikáciám a objektom .Net. Najlepšie zo všetkého je, že tieto objekty je možné importovať a spracovávať s rovnakou syntaxou a idiómom ako natívne objekty v jazyku Python.

Vývoj na IronPython sa za posledných pár rokov nepochybne spomalil. Posledné hlavné vydanie bolo pre Python 2.7.5, na konci roku 2014. Python 3 nebol podporovaný programom IronPython - hlavná nevýhoda, pretože Python 2 už nebude podporovaný od roku 2020 a Python 3 je zavedeným nástupcom.

Na stretnutí na vývojárskej chatovacej stránke Gitter, Earl, Eggers a ďalší hashovali najnaliehavejšie problémy, ktorým projekt čelí, keď sa posúva vpred: čo robiť s vynikajúcimi problémami IronPython na CodePlex; aký druh plánu vydávania implementovať; a aký druh cestovnej mapy navrhnúť pre IronPython 3.

Ďalším problémom, ktorý sa objavil v diskusiách, bolo, ako implementovať podporu pre knižnice Pythonu, ktoré používajú rozšírenia C. Ak má mať IronPython čo najširšie publikum, nie je to možné. Mnoho hlavných knižníc Pythonu, napríklad Numpy, používa na zvýšenie rýchlosti rozšírenie C a v ideálnom prípade by mali fungovať tak, ako sú, v IronPythone bez toho, aby bolo potrebné ich znova kompilovať.

Dobrou správou je, že v tejto oblasti už bola vykonaná určitá práca, konkrétne Ironclad, projekt navrhnutý tak, aby umožnil kompilovaným rozšíreniam CPython pracovať tak, ako sú, v IronPythone. Zlou správou je, že projekt už dlho nevidel veľa práce a bude treba ho poriadne prepracovať, aby bol užitočný pre moderný Python.

Z rubínov a GIL

Ďalším problémom, ktorý prišiel, bolo, ako sa vysporiadať s podobným projektom riešeným rovnakým tímom: IronRuby, čo je .Net implementácia Ruby, ako už z názvu vyplýva. Tieto dva jazyky boli vyvinuté spoločne, pretože pochádzali z rovnakého úsilia v rámci spoločnosti Microsoft okolo dynamického jazykového modulu runtime a zostali v tesnej blízkosti potom, čo ich spoločnosť Microsoft v roku 2010 roztočila do úsilia založeného na komunite.

V pláne je vytvoriť z vlastného projektu IronRuby prilákanie vlastného vývojárskeho publika. IronPython 2 sa bude aj naďalej vyvíjať ako samostatný projekt.

Budúci vývoj programu IronPython sa môže ukázať ako plodný, pretože poskytuje spôsob, ako splniť dlhotrvajúci sen o rýchlom a viacjadrovom prostredí Python. IronPython nemá Global Interpreter Lock (GIL), čo je vlastnosť mnohých implementácií Pythonu, ktorá je obviňovaná z toho, že bráni vysokému výkonu.

To znamená, že skutočnosť, že program IronPython nemá žiadny GIL, ho automaticky neurýchľuje; niektoré benchmarky IronPython sú lepšie ako CPython, iné sú však výrazne horšie. Nateraz by malo stačiť jednoduché uvedenie IronPythonu do tempa so súčasnými vetvami Pythonu, 2 aj 3, dostatočnou misiou.

$config[zx-auto] not found$config[zx-overlay] not found