HierroPython

Implementación del lenguaje de programación Python
HierroPython
Autor(es) original(es)Jim Hugunin , Microsoft
Desarrollador(es)Dino Viehland,
Fundación .NET
Lanzamiento inicial5 de septiembre de 2006 ; hace 18 años [1] ( 5 de septiembre de 2006 )
Versión estable
3.4.1 / 12 de julio de 2023 ; hace 16 meses ( 12 de julio de 2023 )
Versión preliminar
3.4.0-beta1 / 30 de abril de 2022 ; hace 2 años ( 30/04/2022 )
Repositorio
  • github.com/IronLanguages/ironpython3
Escrito enDO#
Sistema operativoWindows , Linux , macOS
PlataformaMarco .NET , .NET , Mono
TipoImplementación del lenguaje de programación Python
LicenciaLicencia Apache 2.0
Sitio webironpython.net 

IronPython es una implementación del lenguaje de programación Python que apunta a los frameworks .NET y Mono . El proyecto actualmente es mantenido por un grupo de voluntarios en GitHub . Es un software gratuito y de código abierto, y se puede implementar con Python Tools for Visual Studio, que es una extensión gratuita 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 envío dinámico de métodos, entre otras cosas, para lenguajes dinámicos. [4] DLR es parte de .NET Framework 4.0 y también es parte de Mono desde la versión 2.4 de 2009. [5] DLR también se puede utilizar como biblioteca en implementaciones de CLI más antiguas.

Estado y hoja de ruta

Jim Hugunin creó el proyecto y contribuyó activamente a él hasta la versión 1.0, que se lanzó el 5 de septiembre de 2006. [6] IronPython 2.0 se lanzó 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 fines 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, tiene como objetivo 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, tiene como objetivo 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 a partir de las fuentes 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 lanzó el 12 de marzo de 2011 y está dirigida a CPython 2.7. [11]
  • La versión 2.7.1 se lanzó el 21 de octubre de 2011 y está dirigida a CPython 2.7. [12]
  • La versión 2.7.2.1 se lanzó 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 lanzó el 7 de septiembre de 2013. [14]
  • La versión 2.7.5 se lanzó el 6 de diciembre de 2014 y consta principalmente de correcciones de errores. [15]
  • La versión 2.7.6 se lanzó el 21 de agosto de 2016 y solo consta de correcciones de errores. [16]
  • La versión 2.7.7 se lanzó el 7 de diciembre de 2016 y solo consta de correcciones de errores. [17]
  • La versión 2.7.8 se lanzó el 16 de febrero de 2018 y consta de correcciones de errores, código reorganizado y una infraestructura de prueba actualizada (incluidas pruebas significativas en Linux con Mono ). También es la primera versión compatible con .NET Core . [18]
  • La versión 2.7.9 se lanzó el 9 de octubre de 2018 y contiene correcciones de errores y código reorganizado. Se pretende que sea la última versión antes de IronPython 3. [19]
  • La versión 2.7.10 se lanzó el 27 de abril de 2020 y agrega compatibilidad con .NET Core 3.1. [20]
  • La versión 2.7.11 se lanzó el 17 de noviembre de 2020 y resuelve problemas al ejecutarse en .NET 5 .
  • La versión 2.7.12 se lanzó 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 lanzó el 12 de diciembre de 2022 y es la primera versión compatible con Python 3.x. [22]

Diferencias con CPython

Existen algunas diferencias entre la implementación de referencia de Python CPython e IronPython. [23] Se sabe que algunos proyectos creados sobre IronPython no funcionan con CPython. [24] Por el contrario, las aplicaciones CPython que dependen de extensiones del lenguaje que se implementan en C no son compatibles con IronPython, [25] a menos que se implementen en una interoperabilidad .NET. Por ejemplo, NumPy fue encapsulado por Microsoft en 2011, lo que permite que el código y las bibliotecas que dependen de él se ejecuten directamente desde .NET Framework. [26]

Luz plateada

IronPython es compatible con Silverlight (que Microsoft ha dejado de utilizar y ya no es compatible con la mayoría de los navegadores web [27] ). Se puede utilizar como motor de scripts en el navegador, al igual que el motor de JavaScript . [28] Los scripts de IronPython se pasan como simples scripts de JavaScript del lado del cliente en <script>etiquetas -tags. También es posible modificar el marcado XAML integrado .

La tecnología detrás de esto se llama Gestalt. [ cita requerida ]

// 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" > ventana.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 . [29] 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 OSI , pero los autores afirman que cumple con la definición de código abierto. [30] Con la versión alfa 2.0, la licencia se cambió a la Licencia Pública de Microsoft , [31] que la OSI ha aprobado. Las últimas versiones se publican bajo los términos de la Licencia Apache 2.0 .

Extensibilidad de la interfaz

Una de las principales ventajas de IronPython es su función como capa de extensibilidad para los marcos de aplicación escritos en lenguaje .NET. Es relativamente sencillo integrar un intérprete de IronPython en un marco de aplicación .NET existente. Una vez instalado, los desarrolladores posteriores pueden utilizar scripts escritos en IronPython que interactúen con objetos .NET en el marco, ampliando así la funcionalidad en la interfaz del marco, sin tener que cambiar ninguna base de código del marco. [32]

IronPython hace un uso extensivo de la reflexión . Cuando se pasa una referencia a un objeto .NET, importará automáticamente los tipos y métodos disponibles para ese objeto. Esto da como resultado una experiencia altamente 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 suministrado por un desarrollador de aplicaciones del lado del cliente externo y puede pasarse al marco del lado del servidor a través de una interfaz. Tenga en cuenta que ni la interfaz ni el código del lado del servidor se modifican para admitir los análisis requeridos por la aplicación cliente.

Desde  BookService  importar  BookDictionary booksWrittenByBookerPrizeWinners  =  [ book . Título  del  libro  en  BookDictionary . GetAllBooks ()  si  "Booker Prize"  está en  book . Author . MajorAwards ]

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

Este script, cuando se envía a esa interfaz, iterará sobre toda la lista de libros mantenida por el marco y seleccionará aquellos escritos por autores ganadores del Premio Booker.

Lo interesante es que la responsabilidad de escribir los análisis reales recae en el desarrollador del lado del cliente. Las exigencias del desarrollador del lado del servidor son mínimas, y básicamente solo proporcionan acceso a los datos que mantiene 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 mensaje simple de Hola Mundo.

importar  clr clr .AddReference ( "System.Windows.Forms " )de  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 punto de referencia exacto utilizado. IronPython tiene un peor rendimiento que CPython en la mayoría de los puntos de referencia tomados con el script PyStone , pero mejor en otros puntos de referencia. [33] IronPython puede tener un mejor rendimiento en programas Python que usan subprocesos o múltiples núcleos, ya que tiene un compilador JIT y también porque no tiene el Global Interpreter Lock . [34] [35]

Descripción general y características principales

  1. Integración con .NET : IronPython le permite utilizar bibliotecas y marcos .NET directamente en su código Python. Esto significa que puede aprovechar el amplio ecosistema .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 la tipificación dinámica y la invocación de métodos dinámicos en lenguajes .NET.
  3. Interoperabilidad : puede llamar a código .NET desde IronPython y viceversa. Esto permite integrar scripts de Python con aplicaciones .NET existentes o utilizar componentes .NET dentro de proyectos Python.
  4. Sintaxis y semántica : IronPython pretende ser lo más cercano posible al lenguaje Python estándar (CPython), aunque puede haber diferencias menores debido a la plataforma .NET subyacente.
  5. Rendimiento : si bien IronPython ofrece un buen rendimiento para muchas aplicaciones, es posible 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 es posible que algunas bibliotecas o sintaxis de Python más nuevas no estén disponibles.

Véase también

Referencias

  1. ^ "Archivo CodePlex". Archivado desde el original el 26 de diciembre de 2017. Consultado el 30 de mayo de 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 desde el original el 26 de enero de 2018. Consultado el 3 de julio de 2013 .
  4. ^ "Descripción general de Dynamic Language Runtime". Microsoft . Consultado el 1 de abril de 2014 .
  5. ^ "2009-07-02 Marek Safar · mono / Mono@340222f". GitHub .
  6. ^ "Blog de Jim Hugunin: ¡Hoy se lanzó IronPython 1.0!". 5 de septiembre de 2006. Consultado el 14 de diciembre de 2006 .
  7. ^ "Fechas de lanzamiento de ironpython". 2008-12-10 . Consultado el 2009-01-25 .
  8. ^ Clarke, Gavin (22 de octubre de 2010). "Microsoft se deshace de los lenguajes Iron". The Register . Consultado el 5 de abril de 2012 .
  9. ^ "2.0.3". ironpython.codeplex.com. Archivado desde el original el 26 de diciembre de 2017. Consultado el 16 de octubre de 2010 .
  10. ^ "2.6". ironpython.codeplex.com. Archivado desde el original el 13 de enero de 2018. Consultado el 16 de octubre de 2010 .
  11. ^ "2.7". ironpython.codeplex.com. Archivado desde el original el 2018-01-02 . Consultado el 2011-03-12 .
  12. ^ "2.7.1". ironpython.codeplex.com. Archivado desde el original el 26 de diciembre de 2017. Consultado el 30 de diciembre de 2011 .
  13. ^ "2.7.2.1". ironpython.codeplex.com. Archivado desde el original el 26 de diciembre de 2017. Consultado el 24 de marzo de 2012 .
  14. ^ "2.7.4". ironpython.codeplex.com. Archivado desde el original el 16 de enero de 2018. Consultado el 7 de diciembre de 2014 .
  15. ^ "2.7.5". ironpython.codeplex.com. Archivado desde el original el 26 de enero de 2018. Consultado el 7 de diciembre de 2014 .
  16. ^ "2.7.6". github.com . Consultado el 21 de agosto de 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 9 de octubre de 2018 .
  20. ^ "IronLanguages/ironpython2". GitHub . Consultado el 26 de junio de 2020 .
  21. ^ "Lanzamientos · IronLanguages/ironpython2". GitHub . Consultado el 8 de agosto de 2022 .
  22. ^ "Lanzamientos · IronLanguages/ironpython3". GitHub . Consultado el 9 de julio de 2023 .
  23. ^ "Diferencias entre IronPython 1.0 y CPython 2.4.3". Microsoft . 18 de diciembre de 2007 . Consultado el 9 de febrero de 2008 .
  24. ^ Foord, Michael. "Nuevo proyecto: Implementación de bibliotecas .NET en Python puro". Archivado desde el original el 2008-08-30 . Consultado el 2008-02-09 .
  25. ^ Eby, Phillip (15 de octubre de 2005). "Children of a Lesser Python" (Los hijos de una pitón menor) . Consultado el 9 de julio de 2008 .
  26. ^ "NumPy y SciPy para .NET" . Consultado el 5 de abril de 2019 .
  27. ^ "Requisitos del sistema de Silverlight 5". www.microsoft.com . Consultado el 16 de noviembre de 2019 .
  28. ^ "Escribir aplicaciones de navegador en Python". IronPython.net . Archivado desde el original el 17 de marzo de 2013.
  29. ^ "Página de inicio original de IronPython". 28 de julio de 2004. Archivado desde el original el 23 de febrero de 2010. Consultado el 13 de mayo de 2007 .
  30. ^ "Licencia de código fuente compartido para IronPython". 28 de abril de 2006. Consultado el 13 de mayo de 2007 .
  31. ^ "Licencia permisiva de Microsoft". 28 de abril de 2007. Consultado el 13 de mayo de 2007 .
  32. ^ "Uso de objetos .NET de IronPython en Resolver One". Archivado desde el original el 14 de enero de 2009. Consultado el 18 de noviembre de 2008 .
  33. ^ "Informe de rendimiento de IronPython". Archivado desde el original el 19 de enero de 2013. Consultado el 5 de octubre de 2009 .
  34. ^ "IronPython en python.org". python.org . Consultado el 4 de abril de 2011. IronPython no tiene GIL y el código multiproceso puede utilizar procesadores multinúcleo.
  35. ^ "El problema más difícil de Python, revisado". Archivado desde el original el 2015-10-31 . Consultado el 2015-07-15 .
  • Sitio web oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=IronPython&oldid=1240750384"