Articulo de referencia

Entorno de ejecución de lenguaje dinámico

El Dynamic Language Runtime ( DLR ) de Microsoft se ejecuta sobre el Common Language Runtime (CLR) y proporciona servicios de lenguaje informático para lenguajes dinámicos . Est...

El Dynamic Language Runtime ( DLR ) de Microsoft se ejecuta sobre el Common Language Runtime (CLR) y proporciona servicios de lenguaje informático para lenguajes dinámicos . Estos servicios incluyen:

El DLR se utiliza para implementar lenguajes dinámicos en el .NET Framework , incluidos los proyectos IronPython e IronRuby .

Dado que las implementaciones de lenguajes dinámicos comparten un sistema subyacente común, debería ser más fácil que interactúen entre sí. Por ejemplo, debería ser posible usar bibliotecas de cualquier lenguaje dinámico en cualquier otro lenguaje dinámico. Además, la API de alojamiento permite la interoperabilidad con lenguajes de línea de comandos de tipado estático como C# y Visual Basic .NET .

Historia

El proyecto Dynamic Language Runtime de Microsoft fue anunciado por Microsoft en MIX 2007. [ 2 ] [ 3 ]

Microsoft lanzó la versión beta 0.9 de .NET DLR en noviembre de 2008, [ 4 ] y la versión final 0.9 en diciembre de 2008. La versión 1.0 se lanzó en abril de 2010. En julio de 2010, Microsoft cambió la licencia de DLR de la Licencia Pública de Microsoft a la Licencia Apache 2.0 . [ 5 ] Con el lanzamiento de .NET 4 , también en abril de 2010, DLR se incorporó al propio .NET Framework. [ 6 ]

El proyecto de código abierto DLR, alojado en GitHub , cuenta con algunas características adicionales para los desarrolladores de lenguajes. Tras su lanzamiento en julio de 2010, el proyecto experimentó poca actividad durante algunos años. Un desarrollador de Microsoft que trabajó en IronRuby interpretó esto como una falta de compromiso por parte de Microsoft con los lenguajes dinámicos en el .NET Framework. [ 7 ] [ 8 ] Sin embargo, desde 2016/17 se ha mantenido una actividad regular, lo que ha dado lugar a varias mejoras y actualizaciones.

Implementaciones de lenguaje

En 2007, Microsoft planeó inicialmente usar el DLR para el próximo Visual Basic 2010 (VB 10.0) y Managed JScript ( ECMAScript 3.0), así como Python y Ruby. [ 2 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ]

El trabajo del DLR sobre Ruby y Python dio como resultado IronRuby , una implementación .NET del lenguaje Ruby , e IronPython . [ 2 ]

En agosto de 2009, Microsoft anunció que ya no tenía planes de implementar Managed JScript en el DLR. [ 13 ] Posteriormente, Fredrik Holmström contribuyó de forma independiente con una implementación de JavaScript para el DLR que denominó "IronJS" siguiendo la tradición de nombres de IronPython e IronRuby.

Al igual que C# , Visual Basic puede acceder a objetos de lenguajes dinámicos construidos sobre el DLR, como IronPython e IronRuby . [ 14 ] [ 15 ]

PowerShell 3.0, lanzado en Windows 8 , se actualizó para usar DLR. [ 16 ]

IronScheme , una implementación de Scheme , [ 17 ] planeaba basarse en el DLR. Esta idea se abandonó porque la rama del DLR utilizada por el proyecto se desincronizaba con la rama principal , y también porque (según el coordinador del proyecto) la versión actual del DLR en ese momento no podía soportar la mayoría de los requisitos de Scheme. [ 18 ]

Arquitectura

El Dynamic Language Runtime se basa en la idea de que es posible implementar especificidades del lenguaje sobre un árbol de sintaxis abstracta genérico e independiente del lenguaje , cuyos nodos corresponden a una funcionalidad específica común a muchos lenguajes dinámicos. [ 19 ] Esta arquitectura se sustenta en la idea de que el número de construcciones elementales del lenguaje que tendrían que implementarse en la pila genérica debería ser inherentemente limitado. [ 20 ] El DLR genera dinámicamente código que corresponde a la funcionalidad expresada por estos nodos. El compilador de cualquier lenguaje dinámico implementado sobre el DLR debe generar árboles abstractos del DLR y entregárselos a las bibliotecas del DLR.

El DLR proporciona DynamicSiteobjetos actualizados dinámicamente que almacenan en caché la tarea de vincular métodos a objetos. Dado que el tipo de un objeto —así como los miembros que contiene— en lenguajes dinámicos puede cambiar durante la vida útil de un programa, una invocación de método debe verificar la lista de métodos para comprobar si la invocación es válida. DynamicSiteLos objetos representan y almacenan en caché el estado del objeto y sus métodos; cualquier actualización del objeto DynamicSitetambién se refleja en los objetos. El DLR enruta todas las invocaciones de métodos a través de los DynamicSiteobjetos, que luego realizan una búsqueda y vinculación rápidas del método con la implementación real. [ 21 ]

A diferencia de otros esfuerzos como la máquina virtual Parrot (sin dependencias) o Da Vinci Machine (construida sobre la JVM de Java agregando nuevos bytecodes al conjunto de instrucciones de la JVM ), DLR se construye sobre el Common Language Runtime existente , la máquina virtual .NET Framework . [ 22 ]

Véase también

Referencias

  1. "Versión 1.3.5" . 19 de diciembre de 2024. Consultado el 24 de diciembre de 2024 .
  2. 1 2 3 Hugunin, Jim. "Un entorno de ejecución de lenguaje dinámico (DLR)" . Recuperado el 21 de junio de 2007. A corto plazo, nos centramos en utilizar un número reducido de lenguajes para impulsar la primera fase del desarrollo de DLR, donde podemos trabajar de cerca y cara a cara con los desarrolladores para solucionar los problemas más graves del diseño de DLR. Tras esta fase inicial, queremos llegar a la comunidad de lenguajes en general.
  3. Viehland, Dino (15 de enero de 2008). "Hoja de ruta para IronPython 2.0" . Archivado del original el 6 de septiembre de 2008. Consultado el 9 de febrero de 2008. En realidad no tenemos un documento como este, pero el objetivo general es lanzar IronPython 2.0 para finales de año. Para el DLR en sí, el plan es lanzar la versión 1.0 aproximadamente al mismo tiempo que IronPython 2.0.
  4. "Archivo de CodePlex" .
  5. "Archivo CodePlex" . Archivado del original el 14 de agosto de 2011. Consultado el 27 de julio de 2010 .
  6. "Descripción general del entorno de ejecución de lenguaje dinámico - .NET Framework" . 30 de marzo de 2024.
  7. "Microsoft se cansa de IronRuby; Jimmy Schementi abandona el barco" . rubyinside.com. 7 de agosto de 2010. Consultado el 26 de febrero de 2012. Hace un año, el equipo se redujo a la mitad y nuestra agilidad se vio gravemente limitada. [...] En general, veo una seria falta de compromiso con IronRuby y con los lenguajes dinámicos en .NET en general.
  8. "Los lenguajes dinámicos de Microsoft están muriendo" . i-programmer.info. 10 de agosto de 2010. Consultado el 26 de febrero de 2012. Sin el impulso final para que los lenguajes funcionen con Visual Studio y se integren con el diseñador, ambos lenguajes Iron probablemente estén muertos, y Microsoft parece haber perdido la voluntad de convertirlos en un éxito.
  9. "Se anuncia Managed JScript" . Consultado el 4 de mayo de 2007 .
  10. "¿Qué demonios es "VBx"?" . 1 de mayo de 2007. Archivado del original el 25 de mayo de 2009. Consultado el 12 de agosto de 2009. Con el nuevo DLR, tenemos soporte para IronPython, IronRuby, Javascript y la nueva compilación dinámica de VBx.
  11. "Poniendo Mix, Silverlight, CoreCLR y DLR en contexto" . 1 de mayo de 2007. Consultado el 12 de agosto de 2008 .
  12. "Introducción a Visual Basic 10" . infoq.com. 4 de mayo de 2007. Consultado el 12 de agosto de 2009. VB 10 aprovecha una característica de Silverlight llamada Dynamic Language Runtime o DLR .
  13. Chiles, Bill (1 de junio de 2009). "¿Futuro de Managed JScript (IronJScript)?" . Archivado del original el 31 de agosto de 2009. Recuperado el 12 de agosto de 2009. El JScript de DLR fue experimental para informar el diseño de DLR (árboles de expresiones, interoperabilidad, sitios de llamadas, alojamiento, etc.). El JS que publicamos con asp futures y el SDK dinámico de Silverlight se volvió muy antiguo e inservible a medida que DLR continuó evolucionando para su lanzamiento en CLR 4.0. Desafortunadamente, en este momento no hay planes para desarrollar y publicar un JScript alojable en DLR.
  14. "Novedades de Visual Basic 2010" . Microsoft . 2009. Consultado el 12 de agosto de 2009. Visual Basic se enlaza con objetos de lenguajes dinámicos como IronPython e IronRuby.
  15. "Tutorial: Creación y uso de objetos dinámicos (C# y Visual Basic)" . 25 de febrero de 2023.
  16. "PowerShell 3 – ¡Finalmente en el DLR!" . Archivado del original el 28-04-2012 . Consultado el 30-03-2012 .
  17. "Archivo de CodePlex" .
  18. "¿Hay algún ejemplo de Silverlight?" . 11/05/2009 . Consultado el 26/07/2009 . Desafortunadamente, mi rama DLR está muy desincronizada con la de Silverlight. Pensándolo bien, tal vez no necesite DLR en sí, lo investigaré. El problema es que DLR, tal como está, no es lo suficientemente bueno para soportar la mayoría de los requisitos de Scheme.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  19. Hugunin, Jim (15 de mayo de 2007). "Árboles DLR (Parte 1)" . Recuperado el 23 de febrero de 2008. El truco clave de implementación en DLR es usar este tipo de árboles para pasar código como datos y mantener el código en una forma fácilmente analizable y mutable el mayor tiempo posible.
  20. Nutter, Charles (28/01/2008). "Lang.NET 2008: Primeras impresiones" . Consultado el 23/02/2008 . La idea es que existe una curva asintótica que se aplana rápidamente en la cantidad de nodos del árbol de expresiones necesarios para implementar cada nuevo lenguaje. Aún está por verse si esto es así.
  21. Bill Chiles (octubre de 2007). "CLR Inside Out: IronPython y el Dynamic Language Runtime" . Revista MSDN . Consultado el 10 de agosto de 2007 .
  22. Rose, John (2 de febrero de 2008). "¡Bravo por el entorno de ejecución dinámico!" . Archivado del original el 6 de febrero de 2008. Recuperado el 23 de febrero de 2008. Es interesante observar las diferencias entre las extensiones CLR y JVM. Funcionan completamente por encima del nivel de CLR sin mejorarlo significativamente, mientras que nosotros desarrollamos la JVM y las bibliotecas al mismo tiempo.
  • "MIX 07 - ¡Silverlight brilla más!" . Consultado el 30 de abril de 2007 .
  • "Presentación en vídeo MIX 07 - DEV02 - ¡Simplemente pégalo! Ruby y el DLR en Silverlight" . Archivado del original el 8 de mayo de 2007. Consultado el 4 de mayo de 2007 .
  • "Jim Hugunin's Thinking Dynamic – Un entorno de ejecución de lenguaje dinámico (DLR)" . Consultado el 6 de febrero de 2008 .
  • "Detalles del paquete fuente dlr-languages ​​en squeeze – DLR en Debian" . Consultado el 6 de julio de 2010 .
  • "Detalles del paquete fuente dlr-languages ​​en lucid – DLR en Ubuntu" . Consultado el 6 de julio de 2010 .
  • "El buey de Pratap Lakshman, el sistema de tipos JScript administrado" . Consultado el 28 de enero de 2008 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  • Descripción general del entorno de ejecución de lenguajes dinámicos
  • dlr en GitHub