Saturday, April 11, 2009

IronPython at PyCon 2009

PyCon 2009 is now long over, and I'm still recovering from the aftermath. This year IronPython played more of a part than ever before.

There were several IronPython related talks, all of which were recorded and are already up on the PyCon Video Channel:
Jim Hugunin's talk on the status and future of IronPython, including how IronPython has affected the Common Language Runtime and C#.
Come learn about our secret plans to use IronPython to take over the world. The emphasis will be on demos showing the seductive possibilities that IronPython enables for Python developers. These include taking advantage of the newest features in Windows 7, running your Python code in the browser with Silverlight, and many more.
Dino Veihland's talk on IronPython's innards - including demonstrating executing Ruby code from inside Python.
IronPython is an implementation of Python running on .NET. This talk will provide an overview of the IronPython internals. The talk will start with a high-level walk through of the IronPython architecture and source layout. From there we’ll drill into details such as method dispatch, how the .NET and Python type systems interrelate, multi-runtime support, and how IronPython uses the DLR. Finally we’ll bring it all together and show you how you can do Python aware interop between .NET and IronPython. Whether you’re just curious about language implementations, planning on hosting IronPython in your own app, or just want to write a new built-in module for IronPython you’ll find something interesting in this talk. Knowledge of C sharp would be helpful but is not required.
Sarah Dutkiewicz's talk on the community distribution of IronPython: FePy. Notably the demos were done from a Linux VM hosted in Windows.
As Python grows in popularity, IronPython has started making more waves. What is IronPython and why should regular Python programmers be familiar with it? This session will introduce the open source .NET implementation of Python known as IronPython without using Windows. Come see FePy (IronPython community edition) in action via Mono -- a cross-platform open source implementation of the .NET framework.
PyCon was preceded by two summits; the VM summit for implementers of Virtual Machines targeting dynamic languages and the Python language summit.
On the Dynamic Language Runtime presentation he reports:
Microsoft .NET DLR: Rolling along nicely; they have fixed a number of performance problems since last year, and have matured their dynamic language support, as showcased in IronPython. Call-site caching is the name of the game this year, on DLR, the JVM (that's what invokedynamic does), and the rush of new high-performance JavaScript implementations. DLR folks also enjoy working with .NET expression trees, very rich run-time type information, reified generics, iterators (generator-like things). They aren't fooling with continuations, at least this year. They have apparently sped up tail-call, which used to be much slower than regular calls.
The language summit addressed several issues, including how the main Python project can make life easier for the other implementations.
As for the discussion around alternative implementations; the most concrete decision was to give checkin privileges to key contributors to the major implementations so that the Python tests can be improved and made more useful. For example, both IronPython and Jython have identical modifications to several Python tests that currently depend on reference counting and deterministic finalization. The goal is to get to the point where IronPython, Jython, and PyPy (etc) don't have to maintain their own (different) versions of the Python tests.

As part of this the Unladen Swallow guys are intending to contribute their benchmarks to core Python, so that we can have a standard set of benchmarks for measuring the performance of Python implementations. The discussion around this is happening on the previously unused stdlib-sig mailing list.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.