I arrived at the Open Source Convention just in time to catch Jim Hugunin -- the father of Jython -- demonstrate IronPython, an implementation of Python for the .NET Common Language Runtime and Mono. The CLR version runs some benchmarks as fast or faster than the native C implementation of Python. (IronPython/Mono lagged both, however.)
The talk concluded with two announcements. First, IronPython 0.6 is available now under the same Common Public License used by Eclipse. That drew applause. Second, Hugunin starts work at Microsoft on Monday. His charter: to work towards a production-ready IronPython, and more broadly to improve the state-of-the-art of dynamic languages on the CLR. The open source crowd needed a minute to digest the second announcement, but then applauded some more.
There was a meme floating around, a few years ago, that the CLR is inherently unfriendly to dynamic languages. As one of the transmitters of that meme, I'm delighted to be proved wrong. Others who ought to be delighted include all the Visual Basic users who were less than thrilled with VB.NET, which took away a lot of the dynamic features that made VB programmers so productive. An IronPython implementation in the style of VB.NET, Hugunin said, wouldn't have been interesting. The point of his experiment was to capture all of Python's interactive style and dynamic semantics. It appears that IronPython will do that, and do it both successfully and efficiently.
"When you think about it," Hugunin said, "why would the CLR be worse for dynamic languages than the JVM, given that Microsoft had the second mover advantage?" And in fact, while he had to do plenty of extra work to support dynamic features that the CLR doesn't natively offer, he notes that the massive engineering resources invested in the CLR make it highly optimized along a number of axes. So, for example, the CLR's function call overhead is apparently less than the native-code CPython's function call overhead, and this is one of the reasons why IronPython benchmarks well against CPython.
Huginin can't say what Microsoft's product plans for IronPython will be, but he does promise that he'll blog about his experiences working to make the CLR an even better platform for dynamic languages. Excellent!
Former URL: http://weblog.infoworld.com/udell/2004/07/28.html#a1050