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

  • Anonymous
    April 30, 2007
    Dynamic Language Runtime on top of the CLR: This Is BIG

  • Anonymous
    April 30, 2007
    Great stuff

  • Anonymous
    April 30, 2007
    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..

  • Anonymous
    April 30, 2007
    I asked my Ruby question on the Castle Devel mailing list and Ayende pointed me to this . One of my first

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

  • Anonymous
    April 30, 2007
    You've been kicked (a good thing) - Trackback from DotNetKicks.com

  • Anonymous
    April 30, 2007
    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? thanks, P.

  • Anonymous
    April 30, 2007
    MIX07 Announcements

  • Anonymous
    April 30, 2007
    Quick, where's my drool bucket?

  • Anonymous
    April 30, 2007
    Please tell me this means that ruby will one day be a first class .Net citizen !!!

  • Anonymous
    April 30, 2007
    I can't wait for Ruby on the DLR!

  • Anonymous
    April 30, 2007
    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.

  • Anonymous
    April 30, 2007
    DLR and IronRuby

  • Anonymous
    April 30, 2007
    Scott also announced an implementation of another dynamic language, Ruby, for .NET. So IronRuby joins

  • Anonymous
    April 30, 2007
    Hi, 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. Thanks.

  • Anonymous
    April 30, 2007
    There is no mention of the support for PowerPC Macs in the future :(

  • Anonymous
    April 30, 2007
    With the first day of MIX, it seems like there's been a staggering stream of announcements (all...

  • Anonymous
    April 30, 2007
    Perl is huge in the academic world. Perl coming to your DLR any time soon?

  • Anonymous
    April 30, 2007
    The comment has been removed

  • Anonymous
    April 30, 2007
    Haha! That's what I get for clicking on the wrong link. Well, congratulations to you, too, Jim! :)

  • Anonymous
    May 01, 2007
    The comment has been removed

  • Anonymous
    May 01, 2007
    While yesterday was a pretty quiet day at the MEDC, next door at MIX07 things were certainly happening.

  • Anonymous
    May 01, 2007
    While yesterday was a pretty quiet day at the MEDC, next door at MIX07 things were certainly happening.

  • Anonymous
    May 01, 2007
    As more details are flowing out of Mix07 and the .Net world is a-buzz with dreams of Ruby On Rails and

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

  • Anonymous
    May 01, 2007
    DLR, Une nouvelle brique fournie par Microsoft au dessus de la CLR . Cette brique permet de contruire

  • Anonymous
    May 01, 2007
    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>).

  • Anonymous
    May 01, 2007
    At MIX07 in Las Vegas, Microsoft detailed planned .NET programming support for Silverlight as well as

  • Anonymous
    May 01, 2007
    Microsoft Introduces Dynamic Language Runtime

  • Anonymous
    May 01, 2007
    Dynamic Language Runtime関連の情報

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

  • Anonymous
    May 01, 2007
    Pour ceux qui cherchaient le prochain bouleversement technologique chez Microsoft... http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx

  • Anonymous
    May 02, 2007
    If you've looked at the Silverlight poster , you've probably noticed the list of languages supported

  • Anonymous
    May 02, 2007
    Check out Jim Hugunin's blog post about the new Dynamic Language Runtime , better support for dynamic

  • Anonymous
    May 02, 2007
    Is managed JavaScript=JScript.NET?

  • Anonymous
    May 02, 2007
    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.

  • Anonymous
    May 02, 2007
    Can anyone recommend a decent reference about DLR along the lines of history, usage, etc.?  Thanks.

  • Anonymous
    May 02, 2007
    Does it work on Linux?  If not, we can't touch it.

  • Anonymous
    May 02, 2007
    The comment has been removed

  • Anonymous
    May 02, 2007
    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

  • Anonymous
    May 02, 2007
    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!

  • Anonymous
    May 02, 2007
    A new VB era with Silverlight

  • Anonymous
    May 02, 2007
    wow.  I guess time playing with IronPython is not wasted.

  • Anonymous
    May 02, 2007
    Scott Hanselman , a .NET community leader and principal in the most excellent podcast Hanselminutes

  • Anonymous
    May 02, 2007
    Lucruri care m-au impresionat în ultima vreme : Buzz-uri Cross-platform CLR via Microsoft Silverlight.

  • Anonymous
    May 02, 2007
    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?

  • Anonymous
    May 03, 2007
    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.

  • Anonymous
    May 03, 2007
    Seriously, Lee, don't bogart the time machine, bro.

  • Anonymous
    May 03, 2007
    While I'm up to my neck in Tech Ed at the moment, I thought I'd drop you a couple of little tidbits...

  • Anonymous
    May 03, 2007
    At MIX07 we released a new implementation of JavaScript on top of Dynamic Language Runtime (DLR) as part

  • Anonymous
    May 04, 2007
    The question “ Is Jasper useable from c#? ” came up on the Jasper forum . The short answer is – We designed

  • Anonymous
    May 04, 2007
    As I am working my way back home from the MIX 07 conference, I have had time to reflect on the conference

  • Anonymous
    May 04, 2007
    Attached to this post is the Dynamic Client Script sample -- an ASP.NET control that simplifies creation

  • Anonymous
    May 04, 2007
    As I am working my way back home from the MIX 07 conference, I have had time to reflect on the conference

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

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

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

  • Anonymous
    May 06, 2007
    Jim Hugunin's Thinking Dynamic has a series of blog entries on a new level of support for dynamic languages

  • Anonymous
    May 06, 2007
    Great job...

  • Anonymous
    May 07, 2007
    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? Marco

  • Anonymous
    May 07, 2007
    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

  • Anonymous
    May 08, 2007
    Ars Technica are reporting that "Mono project lead developer Miguel de Icaza says that the Mono development

  • Anonymous
    May 08, 2007
    Încă puțin și devin de referință în 2.0 :o) Până atunci, să capitalizez - introduc 180 de secunde de

  • Anonymous
    May 09, 2007
    The comment has been removed

  • Anonymous
    May 11, 2007
    Y croe que puedo decir que si de forma parcial. Que es lo que tienen en comun Sun, Adobe y Microsoft

  • Anonymous
    May 14, 2007
    I'm here at DevTeach in beautiful Montreal ! And man, what great weather they are having so far. I'm

  • Anonymous
    May 14, 2007
    Technical Currently-Reading List

  • Anonymous
    May 15, 2007
    Scott Hanselman , a .NET community leader and principal in the most excellent podcast Hanselminutes

  • Anonymous
    May 16, 2007
    It is a boom time for dynamic languages. Two weeks ago Microsoft announced DLR (Dynamic Language Runtime),...

  • Anonymous
    May 18, 2007
    Hi, 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..? Thanks

  • Anonymous
    May 19, 2007
    I'm glad to report that Robert Pickering's book Foundations of F# will be out soon. I'll be writing more

  • Anonymous
    May 19, 2007
    The comment has been removed

  • Anonymous
    May 21, 2007
    Asta dupa caderea de saptamana trecuta: doua discuri crapate simultan, plus backup (numai) din februarie.

  • Anonymous
    May 25, 2007
    Yeah, this is almost a month old, but it's still the first time I've heard about it ...

  • Anonymous
    May 27, 2007
    This is great news. My questions: Will this also be supported by PowerShell script? What will happen to JScript.NET?

  • Anonymous
    June 04, 2007
    John Lam , Dino Viehland and I conducted a session on building languages on top of the Dynamic Language

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

  • Anonymous
    June 04, 2007
    This is a quick reminder about the upcoming events in June and July for the Perth .NET Community of Practice.

  • Anonymous
    June 07, 2007
    En esta entrada de Jimmy Calahorrano coment&eacute; que me parec&iacute;a interesante hablar sobre los

  • Anonymous
    June 07, 2007
    En esta entrada de Jimmy Calahorrano comenté que me parecía interesante hablar sobre los lenguajes dinámicos

  • Anonymous
    June 19, 2007
    This year's MIX conference brought a lot of excitement and buzz to the industry with the announcements

  • Anonymous
    June 27, 2007
    I&#39;m not sure what to make of this one from the Googleplex , it&#39;s certainly food for thought but

  • Anonymous
    June 29, 2007
    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

  • Anonymous
    July 01, 2007
    Eftersom Microsoft har brutet räkenskapsår som slutar den sista juni har alla internt haft fullt upp

  • Anonymous
    July 01, 2007
    Eftersom Microsoft har brutet räkenskapsår som slutar den sista juni har alla internt haft fullt upp

  • Anonymous
    July 10, 2007
    The comment has been removed

  • Anonymous
    July 14, 2007
    For audience opinons, see Korayem or Ahmad Shreef To know how we got the idea...

  • Anonymous
    July 23, 2007
    You may have heard of IronRuby - a shared source implementation of Ruby that runs on top of the .NET.

  • Anonymous
    July 24, 2007
    The comment has been removed

  • Anonymous
    July 24, 2007
    The comment has been removed

  • Anonymous
    July 24, 2007
    The comment has been removed

  • Anonymous
    July 25, 2007
    Es gibt seit einer Weile eine Python Implementierung für .NET (IronPython). Python...

  • Anonymous
    July 27, 2007
    Visual Studio 2008 Beta 2, Silverlight, Rosario, and more!

  • Anonymous
    July 28, 2007
    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...

  • Anonymous
    August 01, 2007
    Am 23. Juli hat Microsoft die erste Release der Hauseigenen IronRuby Implementierung angekündigt. IronRuby

  • Anonymous
    August 21, 2007
    July&#39;s PADNUG meeting featured John Lam talking about the work he is doing with IronRuby . That meeting

  • Anonymous
    September 04, 2007
    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

  • Anonymous
    September 12, 2007
    See I was right, in my post yesterday I said the key role missing in most WPF projects was the &#39;designer

  • Anonymous
    September 12, 2007
    Parece que el lanzamiento del DLR realmente despert&oacute; la implementaci&oacute;n en .NET de lenguajes

  • Anonymous
    September 12, 2007
    Parece que el lanzamiento del DLR realmente despertó la implementación en .NET de lenguajes muy diferentes

  • Anonymous
    September 14, 2007
    The comment has been removed

  • Anonymous
    October 09, 2007
    My sixty-third podcast is up and this one was a blast. I recorded this one at Mix just two days ago with

  • Anonymous
    October 09, 2007
    Updated: I got some feedback from some MSFTies and this is an updated ecosystem diagram. For reference

  • Anonymous
    October 22, 2007
    Dynamiska språk som Ruby och Python och är något som är oerhört hett just nu. Microsoft arbetar med att

  • Anonymous
    October 22, 2007
    Dynamiska språk som Ruby och Python och är något som är oerhört hett just nu. Microsoft arbetar med att

  • Anonymous
    November 25, 2007
    Some say DOM scripting will end in fire,Some say in Silverlight.Still others say with much desire,That...

  • Anonymous
    November 25, 2007
    Some say DOM scripting will end in fire, Some say in Silverlight. Still others say with much desire,

  • Anonymous
    November 28, 2007
    Você, leitor deste blog, pode pensar que tenho algum problema com a Microsoft, pois o conteúdo dos últimos...

  • Anonymous
    November 28, 2007
    Hello everyone.&#160; Welcome to my blog.&#160; The focus of this blog will be dynamic languages at Microsoft

  • Anonymous
    January 01, 2008
    Not surprisingly, the year 2007 started with January. Microsoft and Ford launched SyncMyRide.com during...

  • Anonymous
    January 01, 2008
    Not surprisingly, the year 2007 started with January . Microsoft and Ford launched SyncMyRide.com during

  • Anonymous
    February 03, 2008
    The comment has been removed

  • Anonymous
    April 17, 2008
    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...

  • Anonymous
    May 18, 2008
    Will and I spoke with Martin Maly about the

  • Anonymous
    May 22, 2008
    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

  • Anonymous
    September 16, 2008
    Gracias a la gente de Microsoft de Argentina, en especial al bueno de Miguel Saez , tendré el gran gusto

  • Anonymous
    October 13, 2008
    Bam. Silverlight 2 is out . There's the expected stuff, like the final SDK, Expression, and Silverlight

  • Anonymous
    October 13, 2008
    Bam. Silverlight 2 is out . There's the expected stuff, like the final SDK, Expression, and Silverlight

  • Anonymous
    November 28, 2008
    De multe ori primeam intrebari de genul &quot;care e strategia Microsoft in domeniul limbajelor dinamice?&quot;

  • Anonymous
    December 02, 2008
    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.

  • Anonymous
    January 04, 2009
    The Technology Deluge Continues

  • Anonymous
    March 22, 2009
    DLR and IronRuby