Articulo de referencia

IronPython

[[File:Ironpython-logo.png|200px]]"},"logo alt":{"wt":""},"logo caption":{"wt":""},"author":{"wt":"[[Jim Hugunin]], [[Microsoft]]"},"developer":{"wt":"Dino Viehland, [[.NET Foun...

IronPython es una implementación del lenguaje de programación Python dirigida a los frameworks .NET y Mono . El proyecto es mantenido actualmente por un grupo de voluntarios en GitHub . Es software libre y de código abierto, y puede implementarse con Python Tools for Visual Studio, una extensión libre y de código abierto para el IDE Visual Studio de Microsoft . [ 2 ] [ 3 ]

IronPython está escrito completamente en C# , aunque parte de su código se genera automáticamente mediante un generador de código escrito en Python.

IronPython se implementa sobre Dynamic Language Runtime (DLR), una biblioteca que se ejecuta sobre Common Language Infrastructure y que proporciona tipado dinámico y despacho dinámico de métodos, entre otras cosas, para lenguajes dinámicos. [ 4 ] DLR forma parte de .NET Framework 4.0 y también de Mono desde la versión 2.4 de 2009. [ 5 ] DLR también se puede utilizar como biblioteca en implementaciones más antiguas de CLI.

Estado y hoja de ruta

Jim Hugunin creó el proyecto y contribuyó activamente a él hasta la versión 1.0, que se publicó el 5 de septiembre de 2006. [ 6 ] IronPython 2.0 se publicó el 10 de diciembre de 2008. [ 7 ] Después de la versión 1.0, fue mantenido por un pequeño equipo en Microsoft hasta el lanzamiento de la versión 2.7 Beta 1. Microsoft abandonó IronPython (y su proyecto hermano IronRuby ) a finales de 2010, después de lo cual Hugunin se fue a trabajar a Google. [ 8 ] El proyecto actualmente es mantenido por un grupo de voluntarios en GitHub .

  • La versión 2.0, publicada el 10 de diciembre de 2008 y actualizada como 2.0.3 el 23 de octubre de 2009, está dirigida a CPython 2.5. [ 9 ] IronPython 2.0.3 solo es compatible hasta .NET Framework 3.5.
  • La versión 2.6, publicada el 11 de diciembre de 2009 y actualizada el 12 de abril de 2010, está dirigida a CPython 2.6. [ 10 ] Las versiones de IronPython 2.6.1 son compatibles binariamente solo con .NET Framework 4.0. IronPython 2.6.1 debe compilarse desde el código fuente para ejecutarse en .NET Framework 3.5. IronPython 2.6.2, publicada el 21 de octubre de 2010, es compatible binariamente con .NET Framework 4.0 y .NET Framework 3.5.
  • La versión 2.7 se publicó el 12 de marzo de 2011 y está dirigida a CPython 2.7. [ 11 ]
  • La versión 2.7.1 se publicó el 21 de octubre de 2011 y está dirigida a CPython 2.7. [ 12 ]
  • La versión 2.7.2.1 se publicó el 13 de marzo de 2012. Permite la compatibilidad con bibliotecas de formato de archivo ZIP , SQLite y ejecutables compilados. [ 13 ]
  • La versión 2.7.4 se publicó el 7 de septiembre de 2013. [ 14 ]
  • La versión 2.7.5 se publicó el 6 de diciembre de 2014 y consiste principalmente en correcciones de errores. [ 15 ]
  • La versión 2.7.6 se publicó el 21 de agosto de 2016 y solo consta de correcciones de errores. [ 16 ]
  • La versión 2.7.7 se publicó el 7 de diciembre de 2016 y solo consta de correcciones de errores. [ 17 ]
  • La versión 2.7.8 se publicó el 16 de febrero de 2018 e incluye correcciones de errores, código reorganizado y una infraestructura de pruebas actualizada (que incluye pruebas exhaustivas en Linux bajo Mono ). También es la primera versión compatible con .NET Core . [ 18 ]
  • La versión 2.7.9 se publicó el 9 de octubre de 2018 e incluye correcciones de errores y reorganización del código. Está concebida como la última versión antes de IronPython 3. [ 19 ]
  • La versión 2.7.10 se publicó el 27 de abril de 2020 y añade compatibilidad con .NET Core 3.1. [ 20 ]
  • La versión 2.7.11 se publicó el 17 de noviembre de 2020 y soluciona problemas que surgían al ejecutarse en .NET 5 .
  • La versión 2.7.12 se publicó el 21 de enero de 2022 y resuelve problemas con .NET 6 y elimina la compatibilidad con .NET core 2.1 [ 21 ]
  • La versión 3.4.0 se publicó el 12 de diciembre de 2022 y es la primera versión que admite Python 3.x. [ 22 ]
  • La versión 3.4.1 se publicó el 12 de julio de 2023 y consta de un modo UTF-8 , soporte para el módulo typing en la biblioteca estándar y varias correcciones de errores. [ 23 ]
  • La versión 3.4.2 se publicó el 20 de diciembre de 2024 y consta de correcciones de errores, incluido un problema que impedía su uso en .NET 9. [ 24 ]

Diferencias con CPython

Existen algunas diferencias entre la implementación de referencia de Python, CPython , e IronPython. [ 25 ] Se sabe que algunos proyectos construidos sobre IronPython no funcionan bajo CPython. [ 26 ] Por el contrario, las aplicaciones CPython que dependen de extensiones del lenguaje implementadas en C no son compatibles con IronPython, [ 27 ] a menos que estén implementadas en una interoperabilidad .NET. Por ejemplo, Microsoft integró NumPy en 2011, lo que permitió que el código y las bibliotecas que dependen de él se ejecutaran directamente desde .NET Framework. [ 28 ]

Luz plateada

IronPython es compatible con Silverlight (que Microsoft ha dejado de usar y ya no cuenta con soporte en la mayoría de los navegadores web [ 29 ] ). Puede utilizarse como motor de scripting en el navegador, al igual que el motor JavaScript [ 30 ] . Los scripts de IronPython se pasan como scripts JavaScript simples del lado del cliente en <script>etiquetas <script>. De esta forma, también es posible modificar el marcado XAML incrustado .

La tecnología que hay detrás de esto se llama Gestalt. [ 31 ]

<!-- Script de inicialización de DLR. --> < script src = "http://gestalt.ironpython.net/dlr-latest.js" type = "text/javascript" > </script>< !-- Script del lado del cliente pasado a IronPython y Silverlight. --> < script type = " text / python" > window.Alert ( " Hola desde Python" ) </script>

Lo mismo funciona para IronRuby .

Licencia

Hasta la versión 0.6, IronPython se publicó bajo los términos de la Licencia Pública Común . [ 32 ] Tras la contratación del líder del proyecto en agosto de 2004, IronPython se puso a disposición como parte de la iniciativa de Código Compartido de Microsoft . Esta licencia no está aprobada por la OSI , pero los autores afirman que cumple con la definición de código abierto. [ 33 ] Con la publicación de la versión alfa 2.0, la licencia se cambió a la Licencia Pública de Microsoft , [ 34 ] que la OSI ha aprobado. Las versiones más recientes se publican bajo los términos de la Licencia Apache 2.0 .

Extensibilidad de la interfaz

Una de las principales ventajas de IronPython reside en su función como capa de extensibilidad para los marcos de aplicación escritos en un lenguaje .NET. Integrar un intérprete de IronPython en un marco de aplicación .NET existente es relativamente sencillo. Una vez integrado, los desarrolladores pueden usar scripts escritos en IronPython que interactúan con objetos .NET del marco, extendiendo así la funcionalidad de la interfaz del marco sin necesidad de modificar su código base. [ 35 ]

IronPython utiliza ampliamente la reflexión . Al pasarle una referencia a un objeto .NET, importa automáticamente los tipos y métodos disponibles para dicho objeto. Esto se traduce en una experiencia muy intuitiva al trabajar con objetos .NET desde un script de IronPython.

Ejemplos

El siguiente script de IronPython manipula objetos de .NET Framework. Este script puede ser proporcionado por un desarrollador de aplicaciones cliente externo y pasado al framework del servidor a través de una interfaz. Cabe destacar que ni la interfaz ni el código del servidor se modifican para admitir el análisis requerido por la aplicación cliente.

from BookService import BookDictionarylibrosEscritosPorGanadoresDelPremioBooker = [ libro . Título para libro en BookDictionary . ObtenerTodosLosLibros () si "Premio Booker" en libro . Autor . PremiosPrincipales ]

En este caso, supongamos que .NET Framework implementa una clase, BookDictionary , en un módulo llamado BookService , y publica una interfaz a través de la cual se pueden enviar y ejecutar scripts de IronPython.

Este script, al enviarse a esa interfaz, recorrerá toda la lista de libros que mantiene el sistema y seleccionará aquellos escritos por autores ganadores del Premio Booker.

Lo interesante es que la responsabilidad de escribir los análisis recae en el desarrollador del lado del cliente. Las exigencias para el desarrollador del lado del servidor son mínimas, limitándose básicamente a proporcionar acceso a los datos que gestiona el servidor. Este patrón de diseño simplifica enormemente la implementación y el mantenimiento de marcos de aplicaciones complejos.

El siguiente script utiliza .NET Framework para crear un sencillo mensaje "Hola Mundo".

import clr clr . AddReference ( "System.Windows.Forms" )from System.Windows.Forms import MessageBox MessageBox . Show ( "Hola Mundo" )

Actuación

Las características de rendimiento de IronPython en comparación con CPython , la implementación de referencia de Python, dependen del benchmark exacto utilizado. IronPython tiene un rendimiento inferior al de CPython en la mayoría de los benchmarks realizados con el script PyStone , pero superior en otros. [ 36 ] IronPython puede tener un mejor rendimiento en programas Python que utilizan hilos o múltiples núcleos, ya que cuenta con un compilador JIT y también porque no tiene el bloqueo global del intérprete . [ 37 ] [ 38 ]

Descripción general y características principales

  1. Integración con .NET : IronPython te permite usar las bibliotecas y los frameworks de .NET directamente en tu código Python. Esto significa que puedes aprovechar el extenso ecosistema de .NET y acceder a funciones específicas de los entornos .NET.
  2. Dynamic Language Runtime (DLR) : IronPython se ejecuta en Dynamic Language Runtime, que es un conjunto de servicios que admiten tipado dinámico e invocación dinámica de métodos en lenguajes .NET.
  3. Interoperabilidad : Puedes llamar a código .NET desde IronPython y viceversa. Esto permite integrar scripts de Python con aplicaciones .NET existentes o usar componentes .NET dentro de proyectos de Python.
  4. Sintaxis y semántica : IronPython pretende ser lo más parecido posible al lenguaje Python estándar (CPython), aunque puede haber pequeñas diferencias debido a la plataforma .NET subyacente.
  5. Rendimiento : Si bien IronPython ofrece un buen rendimiento para muchas aplicaciones, puede que no sea tan rápido como CPython para algunas tareas, en particular aquellas que dependen en gran medida de las bibliotecas nativas de Python.
  6. Compatibilidad : IronPython es compatible con Python 2.x, pero no admite las características de Python 3.x. Esto significa que algunas bibliotecas o sintaxis más recientes de Python podrían no estar disponibles.

Véase también

Referencias

  1. "Archivo de CodePlex" . Archivado del original el 26/12/2017 . Consultado el 30/05/2014 .
  2. "IronPython.net" . Consultado el 3 de julio de 2013 .
  3. "Herramientas de Python para Visual Studio - Inicio" . Herramientas de Python para Visual Studio . Archivado del original el 26/01/2018 . Consultado el 03/07/2013 .
  4. "Descripción general del entorno de ejecución de lenguaje dinámico" . Microsoft . Consultado el 1 de abril de 2014 .
  5. «2009-07-02 Marek Safar · mono/Mono@340222f» . GitHub .
  6. "Blog de Jim Hugunin: ¡IronPython 1.0 lanzado hoy!" . 5 de septiembre de 2006 . Consultado el 14 de diciembre de 2006 .
  7. "Fechas de lanzamiento de ironpython" . 10 de diciembre de 2008. Consultado el 25 de enero de 2009 .
  8. Clarke, Gavin (22 de octubre de 2010). "Microsoft abandona Iron Languages" . The Register . Consultado el 5 de abril de 2012 .
  9. "2.0.3" . ironpython.codeplex.com. Archivado del original el 26-12-2017 . Recuperado el 16-10-2010 .
  10. "2.6" . ironpython.codeplex.com. Archivado del original el 13 de enero de 2018. Consultado el 16 de octubre de 2010 .
  11. "2.7" . ironpython.codeplex.com. Archivado del original el 2 de enero de 2018. Consultado el 12 de marzo de 2011 .
  12. "2.7.1" . ironpython.codeplex.com. Archivado del original el 26-12-2017 . Recuperado el 30-12-2011 .
  13. "2.7.2.1" . ironpython.codeplex.com. Archivado del original el 26-12-2017 . Recuperado el 24-03-2012 .
  14. "2.7.4" . ironpython.codeplex.com. Archivado del original el 16 de enero de 2018. Consultado el 7 de diciembre de 2014 .
  15. "2.7.5" . ironpython.codeplex.com. Archivado del original el 26 de enero de 2018. Consultado el 7 de diciembre de 2014 .
  16. "2.7.6" . github.com . Consultado el 21-08-2016 .
  17. "2.7.7" . github.com . Consultado el 5 de enero de 2018 .
  18. "2.7.8" . github.com . Consultado el 5 de enero de 2018 .
  19. "2.7.9" . github.com . Consultado el 09-10-2018 .
  20. "IronLanguages/ironpython2" . GitHub . Consultado el 26 de junio de 2020 .
  21. "Versiones · IronLanguages/ironpython2" . GitHub . Consultado el 08-08-2022 .
  22. "Versiones · IronLanguages/ironpython3" . GitHub . Consultado el 09-07-2023 .
  23. IronLanguages. "Lanzamiento de IronPython 3.4.1 · IronLanguages/ironpython3" . GitHub . Consultado el 26 de abril de 2026 .
  24. IronLanguages. "Lanzamiento de IronPython 3.4.2 · IronLanguages/ironpython3" . GitHub . Consultado el 26 de abril de 2026 .
  25. "Diferencias entre IronPython 1.0 y CPython 2.4.3" . Microsoft . 18 de diciembre de 2007. Consultado el 9 de febrero de 2008 .
  26. Foord, Michael. "Nuevo proyecto: Implementación de bibliotecas .NET en Python puro" . Archivado del original el 30 de agosto de 2008. Consultado el 9 de febrero de 2008 .
  27. Eby, Phillip (15 de octubre de 2005). "Hijos de una pitón menor" . Recuperado el 9 de julio de 2008 .
  28. "NumPy y SciPy para .NET" . Consultado el 5 de abril de 2019 .
  29. "Requisitos del sistema de Silverlight 5" . www.microsoft.com . Consultado el 16 de noviembre de 2019 .
  30. "Escribe aplicaciones para navegador en Python" . IronPython.net . Archivado del original el 17 de marzo de 2013.
  31. "Integre Python, Ruby y XAML directamente en su HTML con Gestalt" . InfoQ . Consultado el 26 de abril de 2026 .
  32. "Página principal original de IronPython" . 28 de julio de 2004. Archivado del original el 23 de febrero de 2010. Consultado el 13 de mayo de 2007 .
  33. "Licencia de código fuente compartido para IronPython" . 28 de abril de 2006. Consultado el 13 de mayo de 2007 .
  34. "Licencia permisiva de Microsoft" . 28 de abril de 2007. Consultado el 13 de mayo de 2007 .
  35. "Uso de objetos .NET desde IronPython en Resolver One" . Archivado del original el 14 de enero de 2009. Consultado el 18 de noviembre de 2008 .
  36. "Informe de rendimiento de IronPython" . Consultado el 5 de octubre de 2009 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  37. "IronPython en python.org" . python.org . Consultado el 4 de abril de 2011. IronPython no tiene GIL y el código multihilo puede usar procesadores multinúcleo.
  38. "El problema más difícil de Python, revisado" . Archivado del original el 31/10/2015 . Consultado el 15/07/2015 .
  • Sitio web oficialEdita esto en Wikidata