Mono
Mono Starts C# 3.0
Moma continues to help Mono improve
May. 7, 2007 07:00 AM
When the first draft of the C# 2.0 spec was released, the Mono team started working on it immediately. The first draft of the C# 3.0 spec has now been out for almost a year, but the Mono team has just started to work on it. There are two reasons for this: one is that the whole team was working on the major 1.2 release, including Winforms. The second reason is that the first draft of the C# 3.0 spec was released shortly after the official release of C# 2.0, and the Mono team was still busy fixing bugs, cleaning up code, and integrating last-minute changes to the C# 2.0 spec. Because a lot of C# 3.0 relies heavily on the new C# 2.0 features, the mono team also wanted to get C# 2.0 refactored and on a solid footing before beginning work on C# 3.0.
Well, now it's full steam ahead with C# 3.0. The main features of C# 3.0 are implicitly typed local variables, extension methods, lambda expressions, object and collection initializers, anonymous types, implicitly typed arrays, query expressions, and expression trees. At this point I won't go into any more details; I only mention them so we can see where Mono is in respect to C# 3.0. (But I know you're interested, so you can find the spec for C# 3.0 at http://msdn2.microsoft.com/en-us/library/ms364047(vs.80).aspx.) Mono now supports extension methods and lambda expressions. Miguel blogs about implementing lambdas at http://tirania.org/blog/index.html, scroll way down (or search) for the February 15 entry titled "Compiler Updates - C# 3.0," and check out Marek Safar's blog on extension methods at http://mareksafar.blogspot.com/2007/02/c-30-extension-methods.html.
More Moma
The Mono Migration Analyzer has a cool new feature, or rather, its Web site does. You can now go to http://primates.ximian.com/~miguel/momareports/ and see all of the Moma reports that have been submitted. This summary page lists the version of Mono the application was tested against and the number of each type of failure (missing, not implemented, to-do, P/Invoke). It also includes a "changed" number, which is the number of items fixed in Mono since the report was filed. You can click on the details and see what functions are missing, including, at the end of the detailed report, the functions that were implemented or fixed since the report was submitted. Many of the applications tested had fewer than five issues with Mono, many more had less than a dozen issues, and only a few had more than 25 issues. A few had about 50, but only three had more than 100, those were SharpDevelop, a major third-party enterprise scheduling application, and a major set of graphing controls. Since I filed the SharpDevelop report against Mono 1.2.3.1, 18 of its issues have been fixed.
In all, since Moma was released with version 1.2.2, over 2,506 reported issues have been fixed.
Moma runs under Windows, requires no install, just download a .exe, and run. Browse to any .NET .dlls or .exe, click to analyze, and click to send a report to Mono. I can't overemphasize how much this helps the Mono team. Do your part and run Moma on your application today!
Grasshopper 2
The second preview release of Grasshopper 2.0 from Mainsoft has been released, details are at http://dev.mainsoft.com/Default.aspx?tabid=236. It's much closer to a final product that the first preview covered here back in Vol. 4 Issue 9. The final release will come sometime this spring. Grasshopper is a CIL to Java byte converter and a set of .NET classes that let .NET code run under J2EE and interoperate with Java code. To do this, Mainsoft makes use of a lot of Mono code, and it has also been a major contributor to the Mono project. Unlike the first preview, which had many limitations, this cut is getting close to a release state, with the only major limitations being no VB complier and some limitations on generics.
Odds and Ends
Last summer, Second Life, the online virtual reality game, tried to use Mono as its development platform for users to create content. The attempt failed because of some memory issues with Mono under stresses unique to Second Life. These issues have been resolved and Mono is again being evaluated for use in Second Life. See the blog at http://blog.secondlife.com/2007/01/21/thanks-for-the-memory/ for a quick description of how the memory issues were tracked down.
Mono 1.2.3.1 bug fix release is out, it includes about 15 fixes, including some that came up with the recent release of IronPython 1.1 alpha 1 and Eiffel.NET.
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.