microsoft: ironruby, ironpython and the dynamic language...
TRANSCRIPT
![Page 1: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/1.jpg)
IronPython combines the best of
Python and .NET.
Microsoft: IronRuby, IronPythonand the Dynamic Language Runtime
Python and .NET.
Nick Hodge
Professional Geek,
Microsoft Australia
![Page 2: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/2.jpg)
HAI HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE
![Page 3: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/3.jpg)
![Page 4: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/4.jpg)
![Page 5: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/5.jpg)
Dynamic languages
• Love ‘em or Hate ‘em People are Using ‘em
• History
– Visual Basic; implemented as Classic .asp
• Language / Framework tie in• Language / Framework tie in
– PHP (Wordpress)
– Ruby (Rails, Merb)
– Javascript (DOM/Browser to jQuery et al)
![Page 6: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/6.jpg)
.NET 4.0
.NET 3.5LINQ
DLR
.NET 2.0
The {C|D}LR
GenericsGenerics
Expression
Trees
Expression
Trees
Extension
Methods
Extension
Methods
Statement
Trees
Statement
Trees
Call Site
Caching
Call Site
Caching
Dynamic
Dispatch
Dynamic
Dispatch
Silverlight
FastFast
Delegates
DynamicDynamic
Joel
.NET 2.0
.NET 1.0GC
BCL
ReflectionJIT
In Runtime
DynamicDynamic
Codegen
VerifierVerifier
Sandbox
DelegatesDelegates Methods
Joel Pobar
![Page 7: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/7.jpg)
Dynamic Language Runtime (DLR)
The Stack
IronPython IronRuby Boo, et al
.NET 2.0 (CLR)CoreCLR
Windows
Silverlight 2.0
Mac
![Page 8: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/8.jpg)
![Page 9: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/9.jpg)
Cats and Dogs Living Together
![Page 10: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/10.jpg)
Dynamic Language Runtime (DLR)
Open Source = Consequences
IronPython IronRuby
Moonlight2CoreCLR
MsPL
ECMA 334/335 CLI
(eg: Mono)
Moonlight2CoreCLR
Linux (et al)
Moonlight
Firefox (et al)
Open
Source
![Page 11: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/11.jpg)
Why Iron*?
![Page 12: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/12.jpg)
![Page 13: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/13.jpg)
Inspiration
• How could Microsoft have screwed up so badly that the CLR is far worse than the JVM for dynamic languages?– Jython shows that dynamic languages
can run well on the JVM
• Jim Hugunin decided to write a short pithy paper called, “Why .NET is a terrible platform for dynamic languages”– 2003
• 2007: John Lam (.NET � MRI)
![Page 14: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/14.jpg)
Dynamic Language Runtime
• Abstracted framework for implementing a dynamic language on .NET/CLR
• Back-end compilers
• Dynamic operations on Objects
• Common Hosting of Languages
• Building your own language with DLR + ANTLR3– http://www.bitwisemag.com/2/DLR-Build-Your-Own-Language– Dermot Hogan. My tiny mind has assploded
• Check out: Irony: Script.NET, Lua– http://codeplex.com/irony
![Page 15: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/15.jpg)
• IronPython, IronRuby– http://codeplex.com/ironpython– http://ironruby.net/
• Codeplex == TFS “in the cloud” ☺
• Core V1 components – Trees, Sites, Binders– Will ship in .NET Framework 4.0
It’s on Codeplex
• Core V1 components – Trees, Sites, Binders– Will ship in .NET Framework 4.0– Basis for C# 4.0’s dynamic
• Future pieces are also available today– Microsoft.Scripting.dll
• http://langnetsymposium.com/2009/talks.aspx
• (IronRuby is in github)
![Page 16: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/16.jpg)
• Ruby– Notorious for no formal specification
– RubySpec: now used by MRI, JRuby, IronRuby…
• Python
Language Specifications
• Python– New movement in recent 6 weeks
![Page 17: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/17.jpg)
• Groovy (yes, Java scripting!)• Nua (Lua)• IronScheme• Phalanger (PHP on CLR/DLR)• Basic Basic and Basic Javascript (egs)
Languages on the DLR
![Page 18: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/18.jpg)
![Page 19: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/19.jpg)
IPy 1.0
• Shipped Sept. 2006
• v2.4 language compatibility
IPy 1.1
• Shipped April 2007
• Limited v2.5 language features
IPy 2.0
• Current Focus
• Fall 2008
• v2.5 language compatibility
IPy 2.6
• Alpha Released
• H1 2009
• v2.6 language compatibility
IPy 3.0
• In Planning
• H2 2009 ?
• Python 3000 language
IronPython Roadmap
• 27/54 built-in modules
features
• More Modules
• Top user issues
• VS Integration(VSX sample)
compatibility
• Built on DLR
• More modules
• Top User Issues
compatibility
• Productize VS integration
language compatibility
• Support for next version of VS
![Page 20: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/20.jpg)
IronRuby 0.3
• Now
IronRuby 1.0
• Targetting
IronRuby Roadmap
• Now • Targettingmid ’09
• Ruby on Rails
http://ironruby.net/
![Page 21: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed](https://reader030.vdocuments.site/reader030/viewer/2022041018/5ecc78b1815a933f551a3fa6/html5/thumbnails/21.jpg)
IronPython combines the best of
Python and .NET.
Microsoft: IronRuby, IronPythonand the Dynamic Language Runtime
Python and .NET.
Nick Hodge
Professional Geek,
Microsoft Australia