Welcome!

Adobe Flex Authors: Liz McMillan, RealWire News Distribution, Maureen O'Gara, Yakov Fain, Keith Swenson

Related Topics: .NET

.NET: Article

Mono 1.2.1 and 1.2.2 Released

When a project like Mono approaches a major release like version 1.2, the code is forked

When a project like Mono approaches a major release like version 1.2, the code is forked: copied into a separate branch in version control. In one copy, the "main" branch, work continues normally, while the code in the other "release" branch goes through a series of freezes leading up to its release.

The first freeze is on changes to critical features like the garbage collector. Later there is a freeze on new features, and last there is a freeze on everything except "showstopper" bugs while the release is tested. Freezing the critical core first allows code that can cause crashes or data loss to be thoroughly tested, while allowing normal development to continue in the rest of the program. Once the key features needed for the release are close to completion, "feature freeze" is implemented, after which no new features are added to the software but work continues on existing features. This keeps new bugs from being introduced along with new features, and it also focuses the developers' energy on completing and debugging the features already included. As the release date looms large, a freeze is put on all work except showstopper bugs that prevent the software from being released. Finally there is a "code" freeze; no more changes to the software are allowed. Beyond this point, unless a new showstopper bug is found, the only changes made are fixes to bugs in the installation packages, such as components left out, or wrong configurations on different platforms.

Note that "stable" releases, such as version 1.2, that have gone through the full testing process are the only releases recommended for critical applications.

While all this is going on in the release branch, development is continuing apace in the development branch. Changes made in the release branch are also copied into the development branch. This means that when Mono shipped the 1.2 release, there were a number of changes already backed up in the development branch, and these were released shortly afterward as version 1.2.1, detailed below.

There were many small bugs fixed in the core runtime, and Thread.Interrupt has been implemented. Web services have received .NET 2.0 updates including the List<T> generic types. Version1.2.1 has partial support for the MIPs processor; complete support has since been checked in and is available in the 1.2.1 release. ASP.NET 2.0 has received many updates from the folks at Mainsoft, as well as from Marek Habersack. ADO.NET received a lot of .NET 2.0 updates, plus XmlSchema reading and writing capabilities. In the security arena, X.509 certificates has had a number of updates to become more .NET 2.0 compatible.

System.Windows.Forms, having been newly completed, received the most updates, including a lot of cleanup work on TextBox and RichTextBox. Transparent and translucent windows now work correctly with Xgl + Compiz, there are faster startups under X11, and lots of focus fixes, including preventing popup windows and menus from stealing focus from the main form. TreeView now has improved scrolling, expanding and collapsing, DataGrid does a better job of handling binding and navigation, the Printing UI is nicer, and tool bars and menus work much better. System.Windows.Forms now passes all 598 unit tests under Linux.

Moma
Mono has a great new tool called the Mono Migration Analyzer. It is used to analyze .NET programs for Mono compatibility. It will create a report that lists .NET functions used by programs that have "Todo attributes," throw "NotImplemented" exceptions, or that are missing in Mono. It also lists all P/Invokes (direct calls to OS functions). You can look at the report yourself, or use a one-button click to send the report to the Mono team. Note that it does this using reflection, so you can run it on any program that you would like to see run under Mono, even if it is a third party program. You can read more and get a copy of the program at www.mono-project.com/Moma. This was used to make many improvements in Mono version 1.2.2, which I will discuss next month.

Odds and Ends
Want to write a game for the Xbox 360? Microsoft now has a special version of VisualStudio, Game Studio Express, for writing games that will run on both Windows and the Xbox 360. It is based on the Microsoft XNA game framework, and can be used free of charge to create games for Windows, or for $99 a year for non-commercial Xbox titles. Commercial titles will require the professional version of Game Studio.

There is also an open source toolkit called Mono.XNA for creating games on the Xbox 360, Windows, and Linux. It is based on Mono and the Tao framework (open source bindings for.NET to OpenGl, SDL and other libraries). It is in the early stages of development and could use a lot of help. There is a basic release working with a few very minor demos. Volunteer or find out more at www.taoframework.com/Mono.Xna.

I will be giving a presentation on Mono at the Atlanta Code Camp on January 20, 2007. The Atlanta Code Camp is hosted by the Atlanta .NET users Group and will be held at the DeVry University in Decatur Georgia. You can visit their home page at www.atlantacodecamp.com, and follow links to see the list of speakers or to get directions.

More Stories By Dennis Hayes

Dennis 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.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.