Tiempo de ejecución de lenguaje dinámico
Dynamic Language Runtime ( DLR ; del inglés - "Dynamic Language Runtime") de Microsoft se ejecuta sobre Common Language Runtime (CLR; del inglés - "Common Language Runtime") y proporciona servicios de lenguaje informático para lenguaje dinámico . Estos servicios incluyen:
El DLR se utiliza para implementar lenguajes dinámicos en .NET Framework , incluidos los proyectos IronPython y IronRuby .
Debido a que las implementaciones de lenguaje dinámico comparten un sistema base común, debería ser más fácil para ellas interactuar entre sí. Por ejemplo, debería ser posible utilizar las bibliotecas de cualquier idioma dinámico en cualquier otro idioma dinámico. Además, el hospedaje de API permite la interoperabilidad con lenguajes CLI tipificados estáticamente como C# y Visual Basic .NET .
Historia
El proyecto Microsoft Dynamic Language Runtime fue anunciado por Microsoft en MIX en 2007 [2] [3] .
Microsoft lanzó .NET DLR 0.9 beta en noviembre de 2008 [4] y la última versión 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 DLR de Microsoft Public License a Apache License 2.0 [5] . Con el lanzamiento de .NET Framework 4 , también en abril de 2010, el DLR se incluyó en el propio .NET Framework [6] .
El proyecto DLR de código abierto alojado en GitHub tiene varias características adicionales para los desarrolladores de lenguajes. Después del lanzamiento en julio de 2010, hubo poca actividad en el proyecto durante varios años. Esto fue interpretado por un desarrollador de Microsoft que trabajaba en IronRuby como una falta de compromiso de Microsoft con los lenguajes dinámicos en .NET Framework [7] [8] . Sin embargo, ha habido una actividad regular desde 2016-2017 que ha resultado en una serie de mejoras y actualizaciones.
Idiomas soportados
Los servicios DLR se utilizan actualmente en la versión de desarrollo de IronRuby , la implementación .NET del lenguaje Ruby y para IronPython [2] .
En 2007, Microsoft planeó usar DLR para los siguientes Visual Basic 2010 (VB 10.0) y Managed JScript ( ECMAScript 3.0) [9] [10] [11] [12] . Sin embargo, a partir de agosto de 2009, Microsoft ya no planea implementar JScript administrado en DLR [13] . Al igual que C#, Visual Basic puede acceder a objetos de lenguajes dinámicos basados en DLR como IronPython y IronRuby [14] [15] .
PowerShell 3.0, lanzado con Windows 8 , se actualizó para usar DLR [16] .
IronScheme , una implementación de Scheme [17] , se planificó para construirse sobre el DLR. Esta idea se abandonó porque la rama del DLR utilizada por el proyecto no estaba sincronizada con la red troncal y también porque (según el coordinador del proyecto) la versión actual del DLR en ese momento no podía admitir la mayoría de los requisitos de Scheme. [18] .
Arquitectura
Dynamic Language Runtime (DLR) se basa en la idea de que es posible implementar funciones de lenguaje además de la independencia general del lenguaje de un árbol de sintaxis abstracta cuyos nodos corresponden a cierta funcionalidad que es común a muchos lenguajes dinámicos [19] . Esta arquitectura se basa en la idea de que el número de construcciones de lenguaje elemental que deben implementarse en la pila universal debe ser inherentemente limitado [20] . El DLR genera dinámicamente código correspondiente a la funcionalidad expresada por estos nodos. El compilador de cualquier lenguaje dinámico implementado sobre DLR debe generar árboles abstractos de DLR y pasarlos a las bibliotecas de DLR.
El DLR proporciona objetos actualizados dinámicamente DynamicSiteque almacenan en caché la tarea de vincular métodos a objetos. Debido a que el tipo de un objeto, así como los miembros que contiene, en los lenguajes dinámicos pueden cambiar durante el ciclo de vida de un programa, una llamada de método debe verificar la lista de métodos para ver si la llamada es válida. Los objetos DynamicSiterepresentan y almacenan en caché el estado de un objeto y sus métodos; cualquier actualización de un objeto también se refleja en los objetos DynamicSite. El DLR enruta todas las llamadas a métodos a través de objetos DynamicSite, que luego realizan una búsqueda rápida y vinculan el método con la implementación real [21] .
A diferencia de otros proyectos como Parrot Virtual Machine (sin dependencias) o Da Vinci Machine (construido en Java JVM mediante la adición de nuevos bytecodes al conjunto de instrucciones de JVM ), el DLR se basa en Common . NET Framework Virtual Machine Language Runtime [22] .
Véase también
Enlaces
- ↑ Lanzamientos . GitHub . Fecha de acceso: 30 de noviembre de 2020. (indefinido)
- ↑ 1 2 Hugunin, Jim Un tiempo de ejecución de lenguaje dinámico (DLR ) . “ A corto plazo, nos centraremos en usar una pequeña cantidad de lenguajes para lanzar la primera ola de desarrollo de DLR, donde podemos trabajar en estrecha colaboración con los desarrolladores para resolver los peores problemas en el diseño de DLR. Después de esta etapa inicial, queremos llegar a la comunidad lingüística más amplia. ". Consultado el 21 de junio de 2007. Archivado desde el original el 9 de febrero de 2010. (indefinido)
- ↑ Viehland, Hoja de ruta de Dino para IronPython 2.0 (15 de enero de 2008). “ Realmente no tenemos tal documento, pero el objetivo general es lanzar IronPython 2.0 para fin de año. En cuanto al DLR en sí, la versión 1.0 está programada para ser lanzada casi al mismo tiempo que IronPython 2.0. ". Consultado el 9 de febrero de 2008. Archivado desde el original el 6 de septiembre de 2008. (indefinido)
- ↑ Archivo de CodePlex . Consultado el 17 de abril de 2021. Archivado desde el original el 28 de febrero de 2010. (indefinido)
- ↑ Archivo CodePlex (enlace descendente) . Consultado el 17 de abril de 2021. Archivado desde el original el 14 de agosto de 2011. (indefinido)
- ↑ Descripción general de Dynamic Language Runtime | Documentos de Microsoft . Consultado el 17 de abril de 2021. Archivado desde el original el 31 de diciembre de 2016. (indefinido)
- ↑ Neumáticos IronRuby de Microsoft; Jimmy Skementi abandona el barco . rubyinside.com (7 de agosto de 2010). “ Hace un año, el equipo se redujo a la mitad y nuestra agilidad se vio severamente limitada. [..] En general, veo una grave falta de compromiso con IronRuby y los lenguajes dinámicos para .NET en general. ". Consultado el 26 de febrero de 2012. Archivado desde el original el 7 de marzo de 2012. (indefinido)
- ↑ Los lenguajes dinámicos de Microsoft están muriendo . i-programmer.info (10 de agosto de 2010). Sin un empujón final para hacer que los lenguajes funcionen en Visual Studio y se integren con el diseñador, ambos lenguajes de Iron probablemente estén muertos, y Microsoft parece haber perdido la voluntad de hacerlos exitosos. ". Consultado el 26 de febrero de 2012. Archivado desde el original el 10 de enero de 2012. (indefinido)
- ↑ JScript administrado anunciado . Consultado el 4 de mayo de 2007. Archivado desde el original el 17 de mayo de 2007. (indefinido)
- ↑ ¿Qué diablos es "VBx"? (1 de mayo de 2007). “ En el nuevo DLR, tenemos soporte para IronPython, IronRuby, JavaScript y la nueva compilación dinámica VBx . ". Consultado el 12 de agosto de 2009. Archivado desde el original el 25 de mayo de 2009. (indefinido)
- ↑ Incluidos Mix, Silverlight, CoreCLR y DLR en contexto (1 de mayo de 2007). Consultado el 12 de agosto de 2008. Archivado desde el original el 24 de septiembre de 2008. (indefinido)
- ↑ Introducción a Visual Basic 10 . infoq.com (4 de mayo de 2007). “ VB 10 usa una característica de Silverlight llamada Dynamic Language Environment o DLR. ". Consultado el 12 de agosto de 2009. Archivado desde el original el 19 de octubre de 2008. (indefinido)
- ↑ Chiles, Bill ¿El futuro de JScript administrado (IronJScript)? (enlace no disponible) (1 de junio de 2009). “ DLR JScript fue experimental para informar el diseño de DLR (árboles de expresión, interacción, sitios de llamadas, hospedaje, etc.). El JS que lanzamos con ASP Futures y Silverlight Dynamic SDK se volvió muy antiguo e inutilizable a medida que DLR continuaba evolucionando para su lanzamiento en CLR 4.0. Desafortunadamente, actualmente no hay planes para desarrollar y lanzar JScript que admita DLR. ". Consultado el 12 de agosto de 2009. Archivado desde el original el 31 de agosto de 2009. (indefinido)
- ↑ ¿Qué hay de nuevo en Visual Basic 2010? . microsoft _ Visual Basic se une a objetos de lenguajes dinámicos como IronPython y IronRuby . ". Consultado el 12 de agosto de 2009. Archivado desde el original el 4 de agosto de 2009. (indefinido)
- ↑ Tutorial: Creación y uso de objetos dinámicos (C# y Visual Basic) | Documentos de Microsoft . Consultado el 17 de abril de 2021. Archivado desde el original el 6 de mayo de 2016. (indefinido)
- ↑ Copia archivada . Fecha de acceso: 30 de marzo de 2012. Archivado desde el original el 28 de abril de 2012. (indefinido)
- ↑ Archivo de CodePlex . Consultado el 17 de abril de 2021. Archivado desde el original el 29 de enero de 2010. (indefinido)
- ↑ ¿Hay alguna muestra de Silverlight? (enlace inaccesible - historial ) (11 de mayo de 2009). “ Lamentablemente, mi rama DLR no está sincronizada con la rama Silverlight. Solo pensé, tal vez no necesito un DLR, lo resolveré. El problema es que el DLR tal como está no es lo suficientemente bueno para admitir la mayoría de los requisitos del lenguaje Scheme. ". Consultado: 26 de julio de 2009. (indefinido)
- ↑ Hugunin, Jim DLR Trees (Parte 1) (15 de mayo de 2007). “ Un truco de implementación clave en el DLR es usar este tipo de árboles para pasar el código como datos y mantener el código en una forma fácil de analizar y mutable durante el mayor tiempo posible. ". Consultado el 23 de febrero de 2008. Archivado desde el original el 30 de abril de 2010. (indefinido)
- ↑ Nutter, Charles Lang.NET 2008: Day One Thoughts (28 de enero de 2008). “ La idea es que hay una curva asintótica que se aplana rápidamente para la cantidad de nodos del árbol de expresión necesarios para implementar cada nuevo idioma. Queda por ver si esto es así. ". Consultado el 23 de febrero de 2008. Archivado desde el original el 6 de febrero de 2008. (indefinido)
- ↑ Bill Chiles. CLR Inside Out: IronPython y Dynamic Language Runtime . Revista MSDN (octubre de 2007). Consultado el 10 de agosto de 2007. Archivado desde el original el 25 de marzo de 2008. (indefinido)
- ↑ ¡ Rose, John Bravo por el trabajo dinámico! (2 de febrero de 2008). “ Es interesante notar las diferencias entre las extensiones CLR y JVM. Funcionan completamente por encima de CLR sin mucha mejora, mientras desarrollamos JVM y bibliotecas al mismo tiempo. ". Consultado el 23 de febrero de 2008. Archivado desde el original el 6 de febrero de 2008. (indefinido)
Enlaces externos
Software de Microsoft gratuito y de código abierto |
---|
información general |
|
---|
Software _ | Aplicaciones |
|
---|
Juegos |
|
---|
Lenguajes de programación |
|
---|
Frameworks y herramientas de desarrollo |
|
---|
Sistemas operativos |
|
---|
Otro |
- CronoZoom
- proyecto mu
- SEDA
- TLAPS
- Implementación de referencia de TPM 2.0
- WikiBhasha
|
---|
|
---|
Licencias |
|
---|
Temas relacionados |
- Fundación .NET
- Fundación de software F-Sharp
- Promesa de especificación abierta de Microsoft
- Fundación Curva Exterior
|
---|
Categoría |