Mono
Iron Python for .NET Released
Portable.NET releases 0.6.8
Oct. 21, 2004 12:00 AM
A fast open source version of Python dispels the myth that the .NET CLR cannot support dynamic languages. Portable.NET has another point release.
Iron Python
Jim Hugunin, of Jython and AspectJ fame, made a series of surprising announcements at OSCON. First, he has released Version 0.6 of Iron Python, an open source (Common Public License) version of Python for .NET. This is the first public release of Iron Python, and it runs "out of the box" with Mono 1.0. Ironically, his original plan was to write a partial Python using just the pure CLR (which would allow it to interoperate with any .NET language), so he could write an article explaining why the CLR performed so poorly with dynamic languages. By being creative - using every bit of the CLR along with relentless benchmarking - Jim was able to make a minimum Python compiler for .NET with decent performance. He continued to add functions to the compiler, looking for the performance killer. The compiler is close to complete now, and he still has not found it. Jim was aided by having a benchmark written by Guido van Rossum (the original creator of Python) that does a good job of testing the corner cases of the Python language.
This brings us to the next surprise from Jim. Iron Python on the Microsoft implementation of .NET was only a few percent slower than Python 2.3 overall, and beat Python 2.3 on the majority (5 out of 7) of the individual benchmarks. The Mono implementation did not do quite as well. On most benchmarks, Mono was only a little slower than Microsoft, but in some cases it was 50% slower, and on exception benchmarks it was 65 times slower. Many on the Mono team are test-driven; if you give them a benchmark like this, they go to work.
Jim's other surprise was that he would be starting work at Microsoft on August 1st. He joined the CLR team, and much of his initial work will be completing Iron Python to explore ways to make the .NET CLR friendlier to dynamic and other non-procedural languages. Good luck to Jim in his new position.
Portable.NET
Portable.NET has released version 0.6.8. As is typical for Portable.NET, there are many changes in all parts of the project. For a complete list and links to downloads, see dotgnu.org/pipermail/developers/2004-August/012427.html.The runtime engine inlines math functions and simple get/set accessors for better speed. It has better support for AMD64 processors, OpenBSD, and parallel builds, along with improvements in threading and Unicode.
SWF now supports BeginInvoke, help and error providers, and data binding controls. It also sports improvements in image conversions, tooltips, and string drawing and measuring.
XML gets improvements in BinHex support, node importing, and XML writers. Portable.NET will be using some of the Mono XML serialization while it finishes its own code.
Portable.NET Basic gets a boost with a dozen types and objects being added, as well as bug fixes in signatures and default parameters.
There was a lot of work on .NET 2.0 compatibility. Much of it was in the System.Runtime namespace, but it also included improvements in assembly handling as well as numerous small improvements and bug fixes.
Odds and Ends
Wintellect plans to create a community to support .NET 2 collection classes that are not included in the .NET 2 base classes. They now have an open source collection of classes. Information on the project can be found at www.wintellect.com/powercollections. Links on this page lead to the binary downloads, and to the design documents that specify the details of the classes. This is also the page to sign up for the Wintellect e-mail list; they are looking for people to help them implement the classes. Note that these classes are for .NET version 2, and because they make heavy use of generics, the classes only work with .NET 2005. For those who missed my article last month on converting VB6 to VB.NET, free downloads of .NET 2005 Betas for C#, VB.NET, C++, J#, SQL, and Web development are at lab.msdn.microsoft.com/vs2005/get/default.aspx. A DVD of Visual Studio 2005 Enterprise Edition also can be ordered for the price of shipping from a link off the same page.
Mono has released version 1.0.1 - it contains a small number of bug fixes that will not affect most users.
There is now a Coca# project implementing a C# wrapper for the Coca graphics system from Apple. An initial screen shot is on Miguel's blog at Click Here !. Information on the project can be found at www.mono-project.com/using/cocoa-sharp.html.
About Dennis HayesDennis Hayes is a programmer at Georgia Tech in Atlanta Georgia where he writes software for the Adult Cognition Lab in the Psychology Department. He has been involved with the Mono project for over six years, and has been writing the Monkey Business column for over five years.