Dynamic languages for .NET: IronPython 1.0 released
As I just read at Microsoft Watch:
Microsoft has put the finishing touches on the 1.0 release of the IronPython dynamic programming language. Microsoft made the final IronPython implementation available on its CodePlex code repository. The IronPython code can be downloaded here.
So for all Python enthusiast out there: Now you can do all the cool stuff ur used to, but combined with the power of .NET 🙂 So in the spirit of .NET (being multi language) we can add another one to the list of supported languages.
If only this had been available in the early days of bittorrent, when I made a start (but did not finish) to convert the existing open source Python code to a .NET library, so I could build a faster and better client…
Excerpt from the v1.0 release notes:
I started work on IronPython almost 3 years ago. My initial motivation for the project was to understand all of the reports that I read on the web showing that the Common Language Runtime (CLR) was a terrible platform for Python and other dynamic languages. I was surprised to read these reports because I knew that the JVM was an acceptable platform for these languages. About 9 years ago I’d built an implementation of Python that ran on the JVM originally called JPython and later shortened to Jython. This implementation ran a little slower than the native C-based implementation of Python (CPython), but it was easily fast enough and stable enough for production use – testified to by the large number of Java projects that incorporate Jython today.
I wanted to understand how Microsoft could have screwed up so badly that the CLR was a worse platform for dynamic languages than the JVM. My plan was to take a couple of weeks to build a prototype implementation of Python on the CLR and then to use that work to write a short pithy article called, "Why the CLR is a terrible platform for dynamic languages". My plans quickly changed as I worked on the prototype, because I found that Python could run extremely well on the CLR – in many cases noticeably faster than the C-based implementation. For the standard pystone benchmark, IronPython on the CLR was about 1.7x faster than the C-based implementation.
IronPython is about bringing together two worlds. The key value in IronPython is that it is both a true implementation of Python and is seamlessly integrated with the .NET platform. Most features were easy and natural choices where the language and the platform fit together with almost no work. However, there were challenges from the obvious cases like exception type hierarchies to the somewhat esoteric challenges concerning different methods on strings. We spent long days and sometimes weeks looking for the best answers to these challenging problems and in the end I think that we have stayed true to both Python and .NET.