Dynamic Language Runtime

Dynamic Language Runtime
Dynamic Language Runtime
Developer(s) Microsoft Dynamic Language Runtime Team
Stable release 1.0 / April 16, 2010
Operating system Microsoft Windows, Debian, Ubuntu
Platform .NET, Mono
Type System platform
License Apache License, v2.0
Website dlr.codeplex.com

The Dynamic Language Runtime (DLR) from Microsoft is an ongoing effort to bring a set of services that run on top of the Common Language Runtime (CLR) and provides language services for several different dynamic languages. These services include:

The DLR is used to implement dynamic languages like Python and Ruby on the .NET Framework.

By having several dynamic language implementations share a common underlying system, it should be easier to let these implementations interact with one another. For example, it should be possible to use libraries from any dynamic language in any other dynamic language. In addition, the hosting API allows interoperability with statically typed CLI languages like C#.



Microsoft's Dynamic Language Runtime project was announced by Microsoft at MIX 2007.[1] Microsoft planned to ship a first usable 1.0 version of the DLR at the same time as IronPython 2.0, by the end of 2008.[2]

Microsoft shipped .NET DLR 0.9 beta on the 26 November 2008,[3] and final 0.9 on 10 December 2008. Version 1.0 shipped on April 16, 2010. On 16 July 2010, Microsoft changed the license of the DLR from the Microsoft Public License to the Apache License, v2.0.[4]

Supported languages

The DLR services are currently used in the development version of IronRuby, a .NET implementation of the Ruby language, and for IronPython.[1]

In 2007, Microsoft planned to use the DLR for the upcoming Visual Basic 2010 (VB 10.0) and Managed JScript (ECMAScript 3.0).[5][5][6][7][8] However, as of August 2009, Microsoft has no more plans to implement Managed JScript (ECMAScript 3.0) on the DLR,[9] and no further mention of Visual Basic .NET working on the DLR has been made by Microsoft on Visual Basic development updates. Similar to C#, Visual Basic will be able to access objects from dynamic languages built on the DLR such as IronPython and IronRuby.[10]

IronScheme, an upcoming Scheme implementation,[11] was planning to build upon the DLR. This idea was abandoned because the DLR branch the project used became out of sync with the trunk, and also because (according to the project coordinator) the current version of the DLR at that time could not support the majority of Scheme's requirements.[12]


The Dynamic Language Runtime is built on the idea that it is possible to implement language specificities on top of a generic language-agnostic abstract syntax tree, whose nodes correspond to a specific functionality that is common to many dynamic languages.[13] This architecture is backed by the idea that the number of elementary language constructs that would have to be implemented on the generic stack should be inherently limited.[14] The DLR dynamically generates code corresponding to the functionality expressed by these nodes. The compiler for any dynamic language implemented on top of the DLR has to generate DLR abstract trees, and hand it over to the DLR libraries.

The DLR provides dynamically-updated DynamicSite objects that cache the task of binding methods to objects. Since the type of an object—as well as the members it contains—in dynamic languages can change during a program lifetime, a method invocation must check the method list to see if the invocation is a valid one. DynamicSite objects represent and cache the state of the object and its methods; any update to the object is reflected in the DynamicSite objects as well. DLR routes all method invocations via the DynamicSite objects, which then performs a fast lookup and binding of the method with the actual implementation.[15]

In contrast to other efforts like the Parrot virtual machine (with no dependencies) or Da Vinci Machine (built on Java's JVM by adding new bytecodes in the JVM instruction set), the DLR is built on top of the existing Common Language Runtime, the .NET Framework virtual machine.[16]

See also


  1. ^ a b Hugunin, Jim. "A Dynamic Language Runtime (DLR)". http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx. Retrieved 2007-06-21. "For the short term, our focus is on using a small number of languages to drive the first wave of DLR development where we can work closely and face-to-face with the developers in order to iron out the worst kinks in the DLR design. After this initial phase, we want to reach out to the broader language community." 
  2. ^ Viehland, Dino (2008-01-15). "Roadmap for IronPython 2.0". http://lists.ironpython.com/pipermail/users-ironpython.com/2008-January/006235.html. Retrieved 2008-02-09. "We don't really have a document like this but the general goal is to ship IronPython 2.0 by the end of the year. For the DLR its self the plan is to ship a v1.0 around the same time as IronPython 2.0." 
  3. ^ http://www.codeplex.com/dlr
  4. ^ http://dlr.codeplex.com/license
  5. ^ a b "Managed JScript announced". http://blogs.msdn.com/jscript/archive/2007/05/04/managed-jscript-announced.aspx. Retrieved 2007-05-04. 
  6. ^ "What the heck is "VBx"?". 2007-05-01. http://www.panopticoncentral.net/archive/2007/05/01/20383.aspx. Retrieved 2009-08-12. "With the new DLR, we have support for IronPython, IronRuby, Javascript, and the new dynamic VBx compile" 
  7. ^ "Putting Mix, Silverlight, the CoreCLR and the DLR into context". 2007-05-01. http://www.hanselman.com/blog/PuttingMixSilverlightTheCoreCLRAndTheDLRIntoContext.aspx. Retrieved 2008-08-12. 
  8. ^ "Introducing Visual Basic 10". infoq.com. 2007-05-04. http://www.infoq.com/news/2007/05/VBx. Retrieved 2009-08-12. "VB 10 takes advantage of a Silverlight feature called the Dynamic Language Runtime or DLR" 
  9. ^ Chiles, Bill (2009-06-01). "Future of Managed JScript (IronJScript)?". http://dlr.codeplex.com/Thread/View.aspx?ThreadId=58121. Retrieved 2009-08-12. "The DLR JScript was experimental for informing the design of the DLR (expression trees, interop, callsites, hosting, etc.). The JS we released with asp futures and the Silverlight dynamic sdk became very old and unserviceable as the DLR continued evolving for release in CLR 4.0. Unfortunately, there are no plans at this time to develop and release a DLR-hostable JScript." 
  10. ^ "What's New in Visual Basic 2010". Microsoft. 2009. http://msdn.microsoft.com/en-us/library/we86c8x2%28VS.100%29.aspx. Retrieved 2009-08-12. "Visual Basic binds to objects from dynamic languages such as IronPython and IronRuby" 
  11. ^ http://www.codeplex.com/IronScheme
  12. ^ "Is there any silverlight sample?". 2009-05-11. http://ironscheme.codeplex.com/Thread/View.aspx?ThreadId=55925. Retrieved 2009-07-26. "Unfortunately, my DLR branch is very out of sync with the Silverlight one. I just thought about it, perhaps I do not need the DLR perse, will investigate. The problem is that the DLR as-is, is not good enough to support the majority of the Scheme's requirements" 
  13. ^ Hugunin, Jim (2007-05-15). "DLR Trees (Part 1)". http://blogs.msdn.com/hugunin/archive/2007/05/15/dlr-trees-part-1.aspx. Retrieved 2008-02-23. "The key implementation trick in the DLR is using these kinds of trees to pass code around as data and to keep code in an easily analyzable and mutable form as long as possible." 
  14. ^ Nutter, Charles (2008-01-28). "Lang.NET 2008: Day 1 Thoughts". http://headius.blogspot.com/2008/01/langnet-2008-day-1-thoughts.html. Retrieved 2008-02-23. "The idea is that there's a quickly-flattening asymptotic curve to the number of expression tree nodes required to implement each new language. Whether that's the case is yet to be seen." 
  15. ^ Bill Chiles (October 2007). "CLR Inside Out: IronPython and the Dynamic Language Runtime". MSDN Magazine. http://msdn2.microsoft.com/en-us/magazine/cc163344.aspx. Retrieved 2007-08-10. 
  16. ^ Rose, John (2008-02-02). "Bravo for the dynamic runtime!". http://blogs.sun.com/jrose/entry/bravo_for_the_dynamic_runtime. Retrieved 2008-02-23. "The differences between the CLR and JVM extensions are interesting to note. They work completely above the level of the CLR without significantly enhancing it, while we are developing the JVM and libraries at the same time." 

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Dynamic Language Runtime — La DLR est une surcouche facilitant l implémentation et l interopérabilité des langages dynamiques. La DLR permet de supporter plusieurs langages. Cette technologie est utilisé par Microsoft pour la plateforme .NET et Sun pour son langage java.… …   Wikipédia en Français

  • Common Language Runtime — (англ. CLR  общеязыковая исполняющая среда)  виртуальная машина, интерпретирующая и исполняющая код на языке CIL, в который компилируются программы, написанные, в частности, на .NET совместимых языках программирования (C#, Managed… …   Википедия

  • Common Language Runtime — The CLR converts CIL to native code. The Common Language Runtime (CLR) is the virtual machine component of Microsoft s .NET framework and is responsible for managing the execution of .NET programs. In a process known as just in time (JIT)… …   Wikipedia

  • Language Integrated Query — LINQ в составе .NET Framework Language Integrated Query (LINQ)  проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework …   Википедия

  • Language Integrated Query — LINQ redirects here. For the card game, see Linq (card game). Language Integrated Query Influenced by SQL, Haskell Language Integrated Query (LINQ, pronounced link ) is a Microsoft .NET Framework component that adds native data querying… …   Wikipedia

  • Dynamic programming language — This article is about a class of programming languages, for the method for reducing the runtime of algorithms, see Dynamic programming. Dynamic programming language is a term used broadly in computer science to describe a class of high level… …   Wikipedia

  • Runtime — In computer science, runtime or run time describes the operation of a computer program, the duration of its execution, from beginning to termination (compare compile time). The term runtime can also refer to a virtual machine to manage a program… …   Wikipedia

  • Dynamic recompilation — In computer science, dynamic recompilation (sometimes abbreviated to dynarec or the pseudo acronym DRC) is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling… …   Wikipedia

  • Dynamic compilation — is a process used by some programming language implementations to gain performance during program execution. Although the technique originated in the Self programming language,[citation needed] the best known language that uses this technique is… …   Wikipedia

  • Dynamic loading — is a mechanism by which a computer program can, at run time, load a library (or other binary) into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those variables, and unload… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.