microsoft: ironruby, ironpython and the dynamic language...

21
IronPython combines the best of Python and .NET. Microsoft: IronRuby, IronPython and the Dynamic Language Runtime Python and .NET. Nick Hodge Professional Geek, Microsoft Australia @nickhodge [email protected]

Upload: others

Post on 24-May-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

IronPython combines the best of

Python and .NET.

Microsoft: IronRuby, IronPythonand the Dynamic Language Runtime

Python and .NET.

Nick Hodge

Professional Geek,

Microsoft Australia

@[email protected]

Page 2: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

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
Page 4: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed
Page 5: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

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

.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

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
Page 9: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

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

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

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
Page 13: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

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

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

• 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

• 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

• 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
Page 19: Microsoft: IronRuby, IronPython and the Dynamic Language ...gotocon.com/dl/jaoo-brisbane-2009/slides/NickHodge_MicrosoftIronRubyIronPythonAndThe...• How could Microsoft have screwed

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

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

IronPython combines the best of

Python and .NET.

Microsoft: IronRuby, IronPythonand the Dynamic Language Runtime

Python and .NET.

Nick Hodge

Professional Geek,

Microsoft Australia

@[email protected]