Ohjelmointi

.Net-palvelimen Python nousee kuolleista

.Net-kehyksen Common Language Runtime (CLR) -käyttöjärjestelmällä toimivan Python-sovelluksen IronPython-kehitystyö saa käsivarren, kun projekti on äskettäin vaihtanut kättä uudeksi kehitysjohdoksi.

Jeff Hardy, entinen johtava IronPython-kehittäjä, vahvisti siirtymisen Ironpython-käyttäjien postituslistalle aiemmin tässä kuussa. "Monista syistä minulla ei ole juuri nyt aikaa antaa IronPythonille ansaittua huomiota", Hardy kirjoitti, "joten annan projektin hallinnan [muille projektin avustajille] Alex Earlille ja Benedikt Eggersille."

Python .Netille ja päinvastoin

C #: llä kirjoitettua IronPythonia ei ole tarkoitettu vain Python-ohjelmien ajamiseen. Se voi tarjota Python-ohjelmoijille sillan olemassa oleviin .Net-sovelluksiin ja objekteihin. Mikä parasta, kyseisiä objekteja voidaan tuoda ja käsitellä samalla syntaksilla ja sanastoilla kuin natiivi Python-objekteja.

IronPythonin kehitys on kiistatta hidastunut parin viime vuoden aikana. Viimeisin merkittävä julkaisu oli Python 2.7.5: lle, vuoden 2014 lopussa. IronPython ei tue Python 3: ta - merkittävä haittapuoli, koska Python 2: ta ei enää tueta vuodesta 2020, ja Python 3 on vakiintunut seuraaja.

Kehittäjien keskustelusivustossa pidetyssä kokouksessa Gitter, Earl, Eggers ja muut ovat peittäneet projektin kiireellisimmät ongelmat sen edetessä: mitä tehdä CodePlexin ratkaisemattomista IronPython-ongelmista; millainen julkaisuaikataulu toteutetaan; ja millainen tiekartta on suunniteltava IronPython 3: lle.

Toinen keskusteluissa esiin noussut kysymys oli C-laajennuksia käyttävien Python-kirjastojen tuen käyttöönotto. Jos IronPythonilla on oltava mahdollisimman laaja yleisö, tämä ei ole vaihtoehto. Monet suuret Python-kirjastot, kuten Numpy, käyttävät nopeutta C-laajennuksilla, ja niiden pitäisi ihannetapauksessa toimia sellaisenaan IronPythonissa ilman, että niitä tarvitsee kääntää uudelleen.

Hyvä uutinen on, että tällä alalla on jo tehty jonkin verran työtä, nimittäin Ironclad, projekti, joka on suunniteltu sallimaan käännettyjen CPython-laajennusten toimivan sellaisenaan IronPythonissa. Huono uutinen on, että projekti ei ole nähnyt paljon työtä pitkään aikaan, ja se on tarkistettava perusteellisesti, jotta se olisi hyödyllinen nykyaikaiselle Pythonille.

Rubiineista ja GIL: istä

Toinen esiin tullut kysymys oli, kuinka käsitellä saman ryhmän käsittelemää samanlaista projektia: IronRuby, joka on Rubyn .Net-toteutus, kuten nimestä voi päätellä. Näitä kahta kieltä on kehitetty yhdessä, koska ne ovat syntyneet samoista Microsoftin ponnisteluista dynaamisen kielen ajon aikana ja pysyneet lähellä toisiaan sen jälkeen, kun Microsoft irrotti heidät yhteisölähtöisiksi ponnisteluiksi vuonna 2010.

Suunnitelmana on tehdä IronRubysta oma projekti houkutellakseen oman kehittäjäyleisönsä. IronPython 2: n kehittämistä jatketaan myös erillisenä projektina.

Tuleva IronPython-kehitys voi osoittautua hedelmälliseksi tarjoamalla keinon täyttää pitkäaikainen, moniydinystävällinen Python-ajonaikainen unelma. IronPythonilla ei ole GIL (Global Interpreter Lock) -ominaisuutta, joka on monien Python-sovellusten ominaisuus, jota on syytetty esteenä korkealle suorituskyvylle.

Se tosiasia, että IronPythonilla ei ole GIL: tä, ei tee siitä automaattisesti nopeampaa; jotkut IronPython-vertailuarvot ovat parempia kuin CPython, mutta toiset ovat selvästi huonommat. Toistaiseksi pelkästään IronPythonin nopeuttaminen Pythonin nykyisten haarojen, sekä 2 että 3, pitäisi olla tarpeeksi tehtävää.