Programiranje

Python za .Net vstane od mrtvih

Razvoj na IronPythonu, izvedbi Pythona, ki deluje v okviru Common Language Runtime (CLR) okvira .Net, je zaradi projekta, ki je pred kratkim spremenil novega razvojnega vodiča, dobil strel v roko.

Jeff Hardy, nekdanji vodilni razvijalec IronPythona, je v začetku tega meseca potrdil prehod na poštni seznam uporabnikov Ironpythona. "Zaradi številnih razlogov zdaj preprosto nimam časa, da bi IronPythonu namenil potrebno pozornost," je zapisal Hardy, "zato nadzor nad projektom predajam [sodelavcema v projektu] Alexu Earlu in Benediktu Eggersu."

Python za .Net in obratno

IronPython, napisan v jeziku C #, ni namenjen le zagonu Python programov. Programerjem Pythona lahko zagotovi most do obstoječih .Net aplikacij in predmetov. Najboljše od vsega je, da je mogoče te predmete uvoziti in obdelati z isto sintakso in idiomi kot izvorni predmeti Python.

Razvoj IronPythona se je v zadnjih nekaj letih nedvomno upočasnil. Zadnja večja izdaja je bila za Python 2.7.5, konec leta 2014. Python 3 IronPython ni podpiral - velika pomanjkljivost, saj Python 2 od leta 2020 ne bo več podprt, Python 3 pa je uveljavljeni naslednik.

Na sestanku na spletnem mestu za klepet razvijalcev Gitter, Earl, Eggers in drugi so razkrili najnujnejša vprašanja, s katerimi se projekt sooča, ko napreduje: kaj storiti glede odprtih vprašanj IronPython na CodePlex; kakšen urnik izdaj uporabiti; in kakšen načrt poti za IronPython 3.

Drugo vprašanje, ki se je pojavilo v razpravah, je bilo, kako uporabiti podporo za knjižnice Python, ki uporabljajo razširitve C. Če želi IronPython imeti najširše možno občinstvo, to ni možnost. Številne večje knjižnice Python, na primer Numpy, uporabljajo razširitve C za hitrost in bi v idealnem primeru morale delovati, kot je v IronPythonu, ne da bi jih bilo treba ponovno prevesti.

Dobra novica je, da je bilo na tem področju že opravljeno nekaj dela, in sicer Ironclad, projekt, zasnovan tako, da omogoča, da prevedene razširitve CPython delujejo, kot je v IronPythonu. Slaba novica je, da projekt že dolgo ni videl veliko dela in ga bo treba temeljito popraviti, da bo koristen za sodobni Python.

Rubinov in GIL

Še eno vprašanje, ki se je pojavilo, je bilo, kako ravnati s podobnim projektom, ki ga je vodila ista ekipa: IronRuby, ki je .Net izvedba Rubyja, kot že ime pove. Oba jezika sta bila sorazvita, ker sta izhajala iz istih prizadevanj znotraj Microsofta okoli Dynamic Language Runtime in sta ostala v neposredni bližini, potem ko ju je Microsoft leta 2010 usmeril v prizadevanja, ki jih vodi skupnost.

V načrtu je, da IronRuby ustvari svoj projekt, da bi pritegnil lastno občinstvo. Tudi IronPython 2 se bo še naprej razvijal kot diskretni projekt.

Prihodnji razvoj IronPythona se bo morda izkazal za plodnega, če bo zagotovil način za uresničitev dolgoletnih sanj o hitrem, večjedru prijaznem izvajanju Pythona. IronPython nima Global Interpreter Lock (GIL), značilnosti številnih implementacij Pythona, za katero je kriva ovira za visoko zmogljivost.

Vendar dejstvo, da IronPython nima GIL, ne pomeni samodejno hitrejšega; nekatera merila uspešnosti IronPython so boljša od CPythona, druga pa izrazito slabša. Zaenkrat bi moralo biti dovolj preprosto pospeševanje IronPythona s trenutnimi vejami Pythona, tako 2 kot 3.