Python za .Net ustaje iz mrtvih

Razvoj na IronPythonu, implementaciji Pythona koja se izvodi na Common Language Runtime (CLR) okvira .Net, puca u ruku zahvaljujući projektu koji je nedavno promijenio ruke u novi razvojni trag.

Jeff Hardy, bivši vodeći programer IronPythona, potvrdio je prijelaz na popisu za slanje pošte korisnika Ironpythona početkom ovog mjeseca. "Iz mnogih razloga trenutno jednostavno nemam vremena posvetiti IronPythonu pažnju koju zaslužuje", napisao je Hardy, "pa predajem kontrolu nad projektom [kolegama suradnicima na projektu] Alexu Earlu i Benediktu Eggersu."

Python za .Net i obrnuto

IronPython, napisan na C #, nije namijenjen samo za pokretanje Python programa. Programerima na Pythonu može pružiti most do postojećih .Net aplikacija i objekata. Najbolje od svega je što se ti objekti mogu uvesti i njima se rukuje s istom sintaksom i idiomima kao i matični Python objekti.

Razvoj IronPythona neupitno se usporio tijekom posljednjih nekoliko godina. Posljednje veliko izdanje bilo je za Python 2.7.5, krajem 2014. IronPython nije podržao Python 3 - veliki nedostatak jer Python 2 više neće biti podržan od 2020. godine, a Python 3 je nasljednik koji je već uspostavljen.

Na sastanku na web mjestu za chat razvojnih programera Gitter, Earl, Eggers i drugi raspršili su najhitnija pitanja s kojima se projekt suočava kako ide prema naprijed: što učiniti s neriješenim problemima IronPythona na CodePlexu; kakav raspored izdavanja primijeniti; i kakvu kartu puta smisliti za IronPython 3.

Sljedeće pitanje koje se pojavilo u raspravama bilo je kako implementirati podršku za Python knjižnice koje koriste C proširenja. Ako IronPython želi imati najširu moguću publiku, to nije opcija. Mnoge glavne Python knjižnice, poput Numpyja, koriste C proširenja za brzinu i idealno bi trebale raditi onakve kakve jesu u IronPythonu, bez potrebe za ponovnom kompilacijom.

Dobra vijest je da je već učinjeno nešto na ovom području, naime Ironclad, projekt osmišljen kako bi kompajlirana proširenja CPython omogućila rad kakav jest u IronPythonu. Loša vijest je što projekt već dugo nije vidio puno posla i trebat će ga temeljito revidirati kako bi bio koristan za moderni Python.

Od rubina i GIL-a

Još jedno pitanje koje se pojavilo bilo je kako postupati sa sličnim projektom koji je vodio isti tim: IronRuby, koji je .Net implementacija Ruby-a, kao što naziv govori. Ova su dva jezika zajednički razvijena, budući da su potekla iz istih napora unutar Microsofta oko Dynamic Language Runtimea, a ostala su u neposrednoj blizini nakon što ih je Microsoft 2010. godine usmjerio u napore vođene zajednicom.

Plan je napraviti IronRuby vlastitim projektom kako bi privukao vlastitu publiku programera. IronPython 2 također će se i dalje razvijati kao diskretni projekt.

Budući razvoj IronPythona mogao bi se pokazati plodonosnim pružajući način da se ispuni dugogodišnji san o brzom, višejezgrenom Python izvođenju. IronPython nema Global Interpreter Lock (GIL), značajku mnogih implementacija Pythona za koju se krivi da predstavlja prepreku visokim performansama.

Svejedno, činjenica da IronPython nema GIL ne automatski ga ubrzava; neka su mjerila IronPython bolja od CPythona, ali druga su znatno lošija. Za sada bi jednostavno dovođenje IronPythona u brzinu s trenutnim granama Pythona, podjednako 2 i 3, trebalo biti dovoljna misija.