John Lam and Jim Hugunin: DLR Presentation

Microsoft’s John Lam and Jim Hugunin go large with the DLR at MIX07. Here are my notes whilst listening and watching the presentation:

What to expect: a Mac, TextMate, Javascript, Python, Ruby, Safari and Silverlight.  TextMate equals text editing. Silverlight is not binary, its just XML and text. You can break it apart and look at the gooeyness inside. And some friendly Microsoft people bantering about Ruby vs Python.

And DLR is going Open Source, like IronPython.

What strikes me the most is that the language that people are comfortable with: Javascript, Python, Ruby, C# – you can code your client side in the same language as server side.

Also, having Ruby instantiate Javascript and call functions. Wow. With a C# object doing UI. Technorati via XML through Yahoo!Pipes to JSON to Silverlight on a Mac. Retrieving from the JSON object deserialised and queried via LINQ.

Let alone doing Basic, with REM and all.

In their only Powerpoint slide, Jim details the performance gains of IronPython on the CLR engine. I wonder if the perf gains are going to match to Ruby, too? Is the DLR/CLR going to be the saviour of the scaling bumps of Ruby?

Parts of the DLR (from Jim Hugunin at end of video):

  1. Dynamic type system, shared object system
  2. Shared hosting API; host one, get all of ’em. ruby bits are coming together now.
  3. Bunch of helpers for compiler writers, so dynamic language runs fast

Question: can use DLR inside console, ASP.NET?

Answer: yes, you can use DLR anywhere you are using .NET. More constrained in Silverlight, due to the sandbox.

Question: is it compiling an assembly, or executing script

Answer: Dynamic methods in .NET 2.0, for code generation lazily; and is a dynamic method. Only held whilst there is a live reference. ASP.NET scenarios with stress test not held onto. Not using method rental; System.Reflection.EmitDynamicMethod

Question: JScript.NET vs. new Dynamic Language Jscript?

Answer: Developer want language purity, not tight integration and following .NET. So follow the ECMA 3.0 spec. That’s Javascript. vs. Ruby “freelove” specification of Ruby is its implementation, not a specification document.

Microsoft has changed, big time. My head is spinning.