A Dynamic Language Runtime (DLR)

Today, at MIX 07, we announced a new level of support for dynamic languages on .NET that we’re calling the DLR.

From the beginning, Microsoft’s .NET framework was designed to support a broad range of different programming languages on a Common Language Runtime (CLR).  The CLR provides shared services to these languages ranging from a world-class GC and JIT to a sandboxed security model to tools integration for debugging and profiling.  Sharing these features has two huge benefits for languages on the CLR.  First, it’s easier to implement a language because lots of difficult engineering work is already done for you.  Second, and more importantly, these languages can seamlessly work together and share libraries and frameworks so that each language can build on the work of the others.

The CLR has good support for dynamic languages today.  IronPython-1.0 demonstrates this.  The new Dynamic Language Runtime (DLR) adds a small set of key features to the CLR to make it dramatically better.  It adds to the platform a set of services designed explicitly for the needs of dynamic languages.  These include a shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code.  With these additional features it becomes dramatically easier to build high-quality dynamic language implementations on .NET.  More importantly, these features enable all of the dynamic languages which use the DLR to freely share code with other dynamic languages as well as with the existing powerful static languages on the platform such as VB.NET and C#.

The DLR is about giving you the best experience for your language – true to the language, excellent tools, performance and seamless integration with a wealth of libraries and platforms. The essential benefits of the DLR are about sharing. It lets language implementers share standard features rather than rebuilding them from scratch. This lets them focus on the features that make a given language unique rather than on reinventing yet another GC system. It lets developers share code regardless of the language the code is implemented in and to use whatever language they prefer regardless of the language preferred by the environment they want to run in. Coupled with the Silverlight 1.1 platform announced today, it even lets languages share a sandboxed security model and browser integration.  This means that developers building browser-based applications can now use their preferred language even for client-side code.

We’re initially building four languages on top of the DLR – Python, JavaScript (EcmaScript 3.0), Visual Basic and Ruby. We shipped today both Python and JavaScript as part of the Silverlight 1.1alpha1 release today. John Lam and I will be demoing all four languages, including VB and Ruby, working together during our talk tomorrow at 11:45.

In addition to the Silverlight release, we’ve also made the full source code for both IronPython and all of the new DLR platform code available on codeplex under the BSD-style Microsoft Permissive License. All of that code can be downloaded today as part of the IronPython project at codeplex.com/ironpython. If you want to know more about the DLR, you should feel free to download the code.  However, you should understand that this is a very early release of these bits and we still have significant work left to do including refactoring, design changes, performance tuning – not to mention documentation.

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.  If you’re building a language on top of .NET and are interested in supporting dynamic language features then we want your feedback on the DLR. However, I’d discourage you from trying to implement on top of the DLR today. I don’t want you to get frustrated trying to work with these really early bits and then not be interested in working with us when we’re better prepared to engage with the language community. We plan to kick off a broader engagement with language implementers at the upcoming lang.net conference in three months – at the end of July.  This will be the best place to really engage with the DLR and let us know what we got wrong.

In the meantime, I’ll be using this blog to post our design notes for the DLR as they’re written and any feedback you have on the design is welcomed. Tomorrow I’ll talk more about the shared dynamic type system and the “One True Object”.

Comments (132)

  1. Dynamic Language Runtime on top of the CLR: This Is BIG

  2. Mark says:

    Great stuff

  3. Max Battcher says:

    Awesome work.  Great to see all of this work towards powerful dynamic languages on the CLR starting to come together.

    I’m particularly intrigued by the inclusion of Silverlight as a supported platform for dynamic languages…  which leads me to a few questions.  In just quick snippets of reading it appears the Silverlight’s profile is close Compact Framework. Does this perhaps mean that dynamic language support for other Compact Framework platforms is near?

    Particularly, I’m quite curious as to how far off dynamic language support on the Xbox XNA mini-CLR is..

  4. chrisortman says:

    I asked my Ruby question on the Castle Devel mailing list and Ayende pointed me to this . One of my first

  5. Čakanie skončilo. Už vieme prečo si John Lam pred trištvrť rokom kúpil jednosmernú letenku na opačné

  6. You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  7. Peter says:

    Please, clarify what exactly is DLR. It is a layer on top of CLR (so there is a need to have CLR to have a DLR)? Probably not because Silverlight runtime do not incorporate whole CLR and DLR is available as part of Silverlight.

    So it is a fresh implementation of base services (such as JIT, GC, sandbox security, …) which ca be considered as subset of CLR? If so, then what parts (what namespaces) are in both?



  8. CodeClimber says:

    MIX07 Announcements

  9. Quick, where’s my drool bucket?

  10. chris hulbert says:

    Please tell me this means that ruby will one day be a first class .Net citizen !!!

  11. I can’t wait for Ruby on the DLR!

  12. hammett says:

    Will it support some kind of dynamic dispatching? It would be great if I could leverage on the CLR (or DLR) to optimize calls, even when methods are overridden in runtime.

  13. Scott also announced an implementation of another dynamic language, Ruby, for .NET. So IronRuby joins

  14. Richard LOPES says:


    This is a killer feature. I’m amazed by the quantity and the quality of stuff coming from MS these days.

    Ruby for .NET is a good news for all of us, Ruby users.


  15. John says:

    There is no mention of the support for PowerPC Macs in the future 🙁

  16. With the first day of MIX, it seems like there’s been a staggering stream of announcements (all…

  17. Dr. Martin says:

    Perl is huge in the academic world. Perl coming to your DLR any time soon?

  18. Craig says:

    Congratulations, John! I know you’ve worked really hard on this for a long time, including moving your whole family to a different country.

  19. Craig says:

    Haha! That’s what I get for clicking on the wrong link.

    Well, congratulations to you, too, Jim! 🙂

  20. Khrishna says:

    Fuck this microsoft bollocks!

    You just stole the Lisp runtime ideas and fucked them up by stupid it salesman lingo.

  21. While yesterday was a pretty quiet day at the MEDC, next door at MIX07 things were certainly happening.

  22. While yesterday was a pretty quiet day at the MEDC, next door at MIX07 things were certainly happening.

  23. Kevin Miller says:

    As more details are flowing out of Mix07 and the .Net world is a-buzz with dreams of Ruby On Rails and

  24. 미국과 시간차이 때문에 이 시간까지 버티면서 키노트를 보고 발표한 것들을 정리해봅니다: SilverLight를 위한 새 커뮤니티 사이트 SilverLight 개발자 사이트 SilverLight

  25. DLR, Une nouvelle brique fournie par Microsoft au dessus de la CLR . Cette brique permet de contruire

  26. Hank Fay says:

    Great work! I’ve been predicting this (to the VFP community) for nearly 3 years now.  This should be a tremendous help to the group, etecnologia, converting the VFP language to .Net (since MS passed on the opportunity <sigh>).

  27. At MIX07 in Las Vegas, Microsoft detailed planned .NET programming support for Silverlight as well as

  28. Microsoft Introduces Dynamic Language Runtime

  29. koido Blog says:

    Dynamic Language Runtime関連の情報

  30. 昨天发布的 SilverLight1.1 Alpha 除了包括跨平台的CLR和类库外,还包括了动态语言运行时(Dynamic Language Runtime — DLR),目前支持的动态语言包括IronPython和JScript

  31. If you’ve looked at the Silverlight poster , you’ve probably noticed the list of languages supported

  32. Check out Jim Hugunin’s blog post about the new Dynamic Language Runtime , better support for dynamic

  33. anony.muos says:

    Is managed JavaScript=JScript.NET?

  34. Managed JScript is a brand new implementation based on infrastructure provided by DLR. It is an implementation of ECMAScript Edition 3 with added support for access to the .NET Framework and cross-language support.

  35. Relative Newbie says:

    Can anyone recommend a decent reference about DLR along the lines of history, usage, etc.?  Thanks.

  36. Matt Boersma says:

    Does it work on Linux?  If not, we can’t touch it.

  37. Sturla says:

    I’d like to see some performance benchmarks. Particularly how the DLR compares with CPython 2.5, an efficient Lisp like CMUCL or SBCL, static languages on CLR (e.g. C#) and native static code (e.g. C++). CMUCL and SBCL is the current gold standard among dynamic languages in terms of run-time performance, so that is the mark to beat.

    You should also consider porting or duplicating NumPy. All dynamic languages needs an efficient array type, even on .NET. It is useful for anything from  hardcore scientific programming to game development with Direct3D.

    And while you are at it, consider implementing Perl and Common Lisp as well. Everyone should have their own favorite dynamic language available on .NET. So add those for the sake of completeness. 🙂

  38. Microsoft’s Jim Hugunin reports from MIX07 that the .NET Framework is gaining new support for dynamic (read: scripting) languages such as Python or Ruby. The Dynamic Language Runtime (DLR) is an extension to the CLR that adds the features important to

  39. Chris M. says:

    I’d like to read more about the DLR.  Can someone provide a link to an offical Microsoft posting or even a whitepaper regarding the DLR?  So far, I’m not find very much other than a few bloggers talking about it.  Thanks!

  40. A new VB era with Silverlight

  41. brian says:

    wow.  I guess time playing with IronPython is not wasted.

  42. Scott Hanselman , a .NET community leader and principal in the most excellent podcast Hanselminutes

  43. Lucruri care m-au impresionat în ultima vreme : Buzz-uri Cross-platform CLR via Microsoft Silverlight.

  44. Adnane Aqartit says:

    What will DLR really adds to the the .NET. i think we already have dynamic objects through Reflection. what’s the real added value of DLR?

  45. Lee Goddard says:

    Although I am personally impressed with C#, and Ruby is cute for fast prototypes, I make my living with start-ups (sometimes grown-up start-ups) and corporations programming for the Internet — and that means Perl.

    If you want to take-over Internet programming, you will have to implement Perl.

  46. Lee's Alter Ego says:

    Seriously, Lee, don’t bogart the time machine, bro.

  47. While I’m up to my neck in Tech Ed at the moment, I thought I’d drop you a couple of little tidbits…

  48. At MIX07 we released a new implementation of JavaScript on top of Dynamic Language Runtime (DLR) as part

  49. Man vs Code says:

    The question “ Is Jasper useable from c#? ” came up on the Jasper forum . The short answer is – We designed

  50. As I am working my way back home from the MIX 07 conference, I have had time to reflect on the conference

  51. Attached to this post is the Dynamic Client Script sample — an ASP.NET control that simplifies creation

  52. As I am working my way back home from the MIX 07 conference, I have had time to reflect on the conference

  53. 微软公司在其 MIX07 大会上宣布了IronRuby,一个运行在.NET CLR之上的Ruby实现的发布。其中,IronRuby与Java VM上的JRuby类似,但与 Ruby/.NET Bridge

  54. 微软公司在其 MIX07 大会上宣布了IronRuby,一个运行在.NET CLR之上的Ruby实现的发布。其中,IronRuby与Java VM上的JRuby类似,但与 Ruby/.NET Bridge

  55. Dynamic Language Runtime(DLR)。DLR和IronPython全部开源,如果你微软这样的动作吃惊,请看看Microsoft 的 OpenSource Licence,可以到codeplex下载。新的动态语言运行时(Dynamic Language Runtime,DLR)向CLR中加入了一小部分核心特性,使之得到显著改善。它向平台中加入了一系列明确为动态语言需求所设计的服务,包括同享的动态类型系统、标准托管模型(Standard Hosting Model),以及轻松生成快速动态代码的支持

  56. Jim Hugunin’s Thinking Dynamic has a series of blog entries on a new level of support for dynamic languages

  57. sunil says:

    Great job…

  58. Marco Antoniotti says:

    Good but….

    as Sturla already correctly implied, the really hard dynamic languages to handle are those in the Common Lisp and Dylan sphere.

    What provisions are there in the DLR to handle these?


  59. Nu när det har gått ett par dagar sedan jag kom hem från Vegas och jag hunnit smälta veckan som gick

  60. Ars Technica are reporting that "Mono project lead developer Miguel de Icaza says that the Mono development

  61. Încă puțin și devin de referință în 2.0 :o) Până atunci, să capitalizez – introduc 180 de secunde de

  62. bafh.at says:

    Der Siegeszug der dynamischen Sprachen scheint nicht aufzuhalten zu sein. Wie ich bereits hier und hier berichtet habe, scheint besonders Ruby bei den zwei grossen Application-Frameworks von Sun und Microsoft hoch im Kurz zu stehen. Nach der Integ

  63. Y croe que puedo decir que si de forma parcial. Que es lo que tienen en comun Sun, Adobe y Microsoft

  64. I’m here at DevTeach in beautiful Montreal ! And man, what great weather they are having so far. I’m

  65. Technical Currently-Reading List

  66. Scott Hanselman , a .NET community leader and principal in the most excellent podcast Hanselminutes

  67. Lazy Coder says:

    It is a boom time for dynamic languages. Two weeks ago Microsoft announced DLR (Dynamic Language Runtime),…

  68. SoftMind says:


    Do I need to learn only Ruby or Ruby + C# to take the addvantage of DLR.

    I am just confused, can any one guide me. Plus… where can i read regular progress on IronRuby.

    Once i start working with IronRuby, will i get more advantage than RubyonRails or Less Advantages..?


  69. I’m glad to report that Robert Pickering’s book Foundations of F# will be out soon. I’ll be writing more

  70. Planeboy says:

    微软于4月30日至5月2日在拉斯维加斯召开了Mix07大会,主要针对设计师、开发者和商业用户,用以普及微软的最新技术和产品。3天72小时的会议费用不菲,总共为995美元。本次Mix大会的主角是Silverlight,它是跨浏览器、跨平台的.NET CLR运行时插件,允许设计师和开发人员在浏览器中建造丰富的媒体体验和RIA应用。

  71. Asta dupa caderea de saptamana trecuta: doua discuri crapate simultan, plus backup (numai) din februarie.

  72. Yeah, this is almost a month old, but it’s still the first time I’ve heard about it …

  73. Omid says:

    This is great news. My questions: Will this also be supported by PowerShell script? What will happen to JScript.NET?

  74. John Lam , Dino Viehland and I conducted a session on building languages on top of the Dynamic Language

  75. Jon Galloway says:

    VB.NET gets a hard time from C# developers. For a variety of reasons, the leading .NET programmers seem

  76. This is a quick reminder about the upcoming events in June and July for the Perth .NET Community of Practice.

  77. En esta entrada de Jimmy Calahorrano coment&eacute; que me parec&iacute;a interesante hablar sobre los

  78. En esta entrada de Jimmy Calahorrano comenté que me parecía interesante hablar sobre los lenguajes dinámicos

  79. Dave Bost says:

    This year’s MIX conference brought a lot of excitement and buzz to the industry with the announcements

  80. I&#39;m not sure what to make of this one from the Googleplex , it&#39;s certainly food for thought but

  81. Harry Pierson examines The Rails Question, asked by Nick Malik, in his blog: &#8220;what is the Rails &#8220;answer&#8221; on the Microsoft platform? At first Pierson readily refers to the Microsoft Dynamic Language Runtime (DLR) team, which will provide

  82. Eftersom Microsoft har brutet räkenskapsår som slutar den sista juni har alla internt haft fullt upp

  83. Eftersom Microsoft har brutet räkenskapsår som slutar den sista juni har alla internt haft fullt upp

  84. What&#39;s that old line about if all you have is a hammer all your problems look like nails? There are

  85. For audience opinons, see Korayem or Ahmad Shreef To know how we got the idea…

  86. You may have heard of IronRuby – a shared source implementation of Ruby that runs on top of the .NET.

  87. I know when I think about .Net programming languages the first thing that pops into my head is "C#" followed

  88. I know when I think about .Net programming languages the first thing that pops into my head is &quot;C#&quot;

  89. I know when I think about .Net programming languages the first thing that pops into my head is &quot;C#&quot;

  90. E# says:

    Es gibt seit einer Weile eine Python Implementierung für .NET (IronPython). Python…

  91. Brain Matter says:

    Visual Studio 2008 Beta 2, Silverlight, Rosario, and more!

  92. DT blogi says:

    Neljapäeval andis Microsoft välja Visual Studio 2008 teise beta-versiooni. Samuti tuli uus versioon Silverlight-ist, seekord siis 1.0 RC. Lähimal ajal on oodata Visual Studiole add-in-i, mis võimaldab Visual Studiot kasutada Silverlight-i arendusk…

  93. Am 23. Juli hat Microsoft die erste Release der Hauseigenen IronRuby Implementierung angekündigt. IronRuby

  94. Kelly White says:

    July&#39;s PADNUG meeting featured John Lam talking about the work he is doing with IronRuby . That meeting

  95. Okay, I have caught the Ruby bug. It’s like an itch, the more I scratch it, the more it needs to be scratched. Ruby is a great language. That’s a fact. Rails is a great web framework. That’s a fact. Somewhat over-h

  96. See I was right, in my post yesterday I said the key role missing in most WPF projects was the &#39;designer

  97. Parece que el lanzamiento del DLR realmente despert&oacute; la implementaci&oacute;n en .NET de lenguajes

  98. edgarsanchez says:

    Parece que el lanzamiento del DLR realmente despertó la implementación en .NET de lenguajes muy diferentes

  99. texas high school football rankings 2006

  100. Blogs says:

    My sixty-third podcast is up and this one was a blast. I recorded this one at Mix just two days ago with

  101. Blogs says:

    Updated: I got some feedback from some MSFTies and this is an updated ecosystem diagram. For reference

  102. Dynamiska språk som Ruby och Python och är något som är oerhört hett just nu. Microsoft arbetar med att

  103. Dynamiska språk som Ruby och Python och är något som är oerhört hett just nu. Microsoft arbetar med att

  104. Some say DOM scripting will end in fire,Some say in Silverlight.Still others say with much desire,That…

  105. Some say DOM scripting will end in fire, Some say in Silverlight. Still others say with much desire,

  106. C que sabe! says:

    Você, leitor deste blog, pode pensar que tenho algum problema com a Microsoft, pois o conteúdo dos últimos…

  107. Hello everyone.&#160; Welcome to my blog.&#160; The focus of this blog will be dynamic languages at Microsoft

  108. Not surprisingly, the year 2007 started with January. Microsoft and Ford launched SyncMyRide.com during…

  109. Not surprisingly, the year 2007 started with January . Microsoft and Ford launched SyncMyRide.com during

  110. Cocos: &quot;Compiler Construction Set&quot;, part 1 (framing the problem) In this post I&#39;ll be talking

  111. I stumbled upon David Meyer&#8217;s Duck Typing Project while searching for infos about the DLR: The duck typing library is a .NET class library written in C# that enables duck typing. Duck typing is a principle of dynamic typing in…

  112. Anonymous says:

    Will and I spoke with Martin Maly about the

  113. I think just about everyone in the software development community at least knows what Ruby on Rails is, so I won’t do into it here. There is some real exciting things going on in the Ruby community and in particular, Ruby on Rails running on more than

  114. Gracias a la gente de Microsoft de Argentina, en especial al bueno de Miguel Saez , tendré el gran gusto

  115. Bam. Silverlight 2 is out . There’s the expected stuff, like the final SDK, Expression, and Silverlight

  116. ASPInsiders says:

    Bam. Silverlight 2 is out . There’s the expected stuff, like the final SDK, Expression, and Silverlight

  117. De multe ori primeam intrebari de genul &quot;care e strategia Microsoft in domeniul limbajelor dinamice?&quot;

  118. Given all the announcements and implications from the Mix’07 conference, I am writing this N&amp;N attempting to capture in a list what it all means, at least what I think it means. I’m going to skip categories since the announcements span technologies.

  119. The Technology Deluge Continues