# IronPython

IronPython és una implementació del llenguatge de programació python orientat en l'entorn de treball .NET i Mono, creat per Jim Huguinin. La versió 1.0 va ser llençada al 5 setembre del 2006. La versió 2.0 va ser llençada al 10 de desembre del 2008. IronPython està escrit enterament en C#, encara que part del seu codi és generat automàticament per un generador de codi escrit en Python.

## Estat i full de ruta

La versió actual (1.1.2) té com a objectiu la compatibilitat amb CPython 2.4.4. Encara que, existeixen diferències entre les implementacions de referència de Python i IronPython. és conegut que alguns dels programes construïts sobre IronPython no treballen sota CPython. Per contra, aplicacions fetes amb CPython que depenen de les extensions al llenguatge que s'executen en C (per exemple, NumPy) no són compatibles amb IronPython. Encara que un suport comercial de codi obert per fer front ha aquest projecte està en camí. La versió 2.0, va ser llençada el 10 de desembre del 2008, que tenia com a objectiu la compatibilitat amb Cpython IronPython 2.0 està construït sobre la Rutina de Llenguatge Dinàmic(RLD) que conté un sistema de tipus dinàmic resumint del llenguatge ubicat a IronPython 1. Com que el RLD se executa sobre la base de CLR que es lliurarà amb la pròxima SilverLigtht2, IronPython pot ser utilitzat pel client com a intèrpret d'ordres del navegador amb SilverLigtht.

## Llicència

Fins a la versió 0.6, IronPython va ser llicenciat dintre del marc de la llicència Pública. Després de la contractació del cap del projecte en agost del 2004, es va posar a disposició IronPython com a part de la iniciativa “Microsft's Shared Source”. Els autors afirmen que la llicència, encara que no està revisada per la OSI (Open Source Initiative), s'ajusta a la definició de codi obert. Amb el llançament de la versió 2,0 en estat alfa es va adoptar la llicència Microsoft Public License.

## Interfície d'extensibilitat

Una de les principals avantatges de IronPython és la seva funció com a capa d'extensibilitat en entorn de treball escrit en .NET. És relativament fàcil integrar un intèrpret de IronPython en un entorn de treball existent fet en .NET. Un cop en funcionament, els desenvolupadors poden utilitzar els guions de comandes escrits en IronPython perquè interaccionin amb l'entorn de treball de .NET, ampliant així la funcionalitat de la interfície dintre de l'entorn de treball sense canvia el codi font de tot l'entorn de treball. IronPython fa un ampli ús de la reflexió. Quan introdueixes una referència a un objecte .NET, automàticament s'importen les dades associades disponibles per a aquest objecte. Això resulta ser altament intuïtiu per treballar amb els objectes .NET amb un guió de comandes de IronPython.

## Exemples

El següent guió de comandes fet amb IronPython manipula l'entorn de treball .NET. Aquest guió de comandes pot ser executat per un tercer al costat del client i desenvolupador d'aplicacions i és enviat al servidor passant per l'entorn d'una interfície, tenint en compte que ni la interfície ni l'entorn de treball han estat modificats per recolzar l'anàlisi del client.
En aquest cas, s'assumeix que l'entorn de treball implementa una classe, BookDictionary, en un mòdul anomenat BookService, i publica una interfície en la que es pot enviar i executar un guió de comandes de IronPython.
Aquest guió de comandes, quan s'envia a la interfície, cercarà la llista de llibres mantinguts per l'entorn de treball i escollirà els texts dels autors guanyadors del premi Booker. El més interessant és que la responsabilitat sobre l'escriptura real de l'anàlisi s'efectua en el costat del client. Els requisits per part del servidor són mínims, essencialment només facilita l'accés a les dades mantingudes pel servidor. Aquest disseny simplifica enormement el desenvolupament, desplegament i manteniment de la complexa aplicació de l'entorn de treball.