I returned home yesterday from England. Thoughts on England will follow later (and some other stuff I’ve been thinking about and read). To keep you busy until then there’s “IronPython”:http://www.ironpython.com.
IronPython probably is the first dynamic language successfully ported to the .NET framework (or CLR to be exact). The problem with the CLR(Common Language Runtime) is that it’s built for statically typed object-oriented languages. And as you probably know “Python”:http://www.python.org is a dynamically typed multi-paradigm language. The multi-paradigm (the old-style linear programming, object oriented and some functional programming respectively) is not the biggest problem, but the dynamic nature of the language is. “ActiveState”:http://www.activestate.com has attempted to port Perl and Python to the CLR but basically failed. They got a prototype working, but it was too slow to use.
“Jim Hugunin”:http://hugunin.net, who previously developed “Jython”:http://www.jython.org (a similar project compiling Python to Java bytecode), now accomplished in doing a successful Python compiler implementation. So successful in fact that it’s faster than the original C implementation of Python in many benchmarks. What IronPython does is simply compiling your Python code to CIL(Common Intermediate Language) which then can be run on the CLR (either Microsoft’s .NET implementation or “Mono”:http://www.go-mono.com) without needing the user to have Python installed. I believe that you have the choice of either compiling the Python supporting libraries into your assembly of delivering it with your application as a separate dll.
Interesting thing is that in the benchmarks (which can be found in his “presentation”:http://conferences.oreillynet.com/presentations/os2004/hugunin_jim_up.ppt) it shows that Mono runs a lot slower than Microsoft’s CLR implementation. Which is not incredibly surprising considering how long Microsoft has been working on it. In the referenced presentation, Jim also announced that he has been hired by Microsoft to continue work on IronPython and by joining the CLR team. He’ll be working on improving the CLR to work better with dynamic languages and to help other developers to port their dynamic languages to the CLR. Good news in my opinion.
For those interested: “The IronPython Website”:http://www.ironpython.com and also check out the “Presentation”:http://conferences.oreillynet.com/presenta…unin_jim_up.ppt (powerpoint required).
For IronPython to run you either need the “.NET Framework”:http://msdn.microsoft.com/netframework/ or “Mono”:http://www.go-mono.com. IronPython has been released under the “Common Public License”:http://www.eclipse.org/legal/cpl-v10.html.