Linux World Australia –
We already know some of the highlights of the Mono 0.30 release include XML, security, and C# compiler performance improvements. In this article I will go over some of the other improvements and announcements. However, just after the 0.30 release, a couple of compiler bugs were found that affected several people using Mono for "real" work, so there was a quick 0.30.1 release. The full release notes can be found at www.go-mono.com/archive/mono-0.30.1.html; the release itself is at www.go-mono.com/download.html.
Included in the release notes is an announcement that Novell has hired two longtime Mono volunteers. One will be working from Barcelona on System.Drawing, joining three others in that endeavour. The other will be the first full-time security/cryptography programmer on the Mono Project. Regular readers likely recall that Novell moved at least a half-dozen programmers to the Mono project several months ago, and has donated LDAP code to Mono.
Since the start of the year, it seems that there has been an increase in the activity level on the mailing list from new programmers wanting to join the project, especially in the areas of using and testing SWF and System.Drawing. Combined, it looks as if Mono is going to get a lot more manpower. If this translates into more code, Mono could be entering a whole new era. Novell's acquisition of Ximian has been very good for the project, and Novell seems to be true to their word about keeping open source open.
Mono's SWF has been unusable on Linux for months while a more flexible foundation has been written. This phase is drawing to a close, and the results should be available by the time you read this. The biggest change is the way Mono works with Wine to implement SWF; this has evolved over time, and was complicated by differences between threading libraries and conflicts between the Wine and Mono packages about which software is initialized first.
At first SWF ran on Linux only with garbage collection turned off; then SWF would run with a special version of Mono-Wine in which the Mono team made many changes to the Wine source code. Of course, this left Mono needing to maintain a custom branch of the Wine tree, which is always bad; it forks the code base and requires maintenance, but there were too many changes (some of them ugly) for the Mono code to be rolled into the main Wine code base.
With the upcoming release only a few small changes need to be made to Wine, so in the short term Mono can respond to new releases of Wine quickly, and in the longer term, we are now close to having a set of patches that could be included in the main Wine code, enabling Mono to run with Wine out of the box. By the time you read this, work on the SWF classes and controls should be progressing again. Work is also under way to support the .NET 1.2 changes.
But back to the 0.30 release. Again, performance enhancements and bug fixes were the order of the day, with almost 1,400 Bugzilla issues closed - four times the number in the 0.29 release. There was also a big change in the process Mono uses to handle releases; Mono now does a "release candidate" a few days before the real release so developers can test the install packages on different operating systems.
This release includes an OS-independent FileSystemWatcher. If the OS is capable of firing an event when a file is changed, then the native support is used; if the OS does not support file watching, a thread is created to poll the file for changes. This is especially important for ASP.NET because it allows Web applications to react to configuration and source code changes without the need to restart the application. Three (or more by the time you read this) Web applications have been ported to run on Mono: Flexwiki, DasBlog, and the infamous Pet Shop. They can be downloaded from www.go-mono.com/ports.
Portable.NET now has a newsletter "The DotGNU Informer," published on an irregular basis at http://dotgnu.info; it can also be received with the mailing list. Mac packages for Portable.NET 0.6.2 are now available for download using the DarwinPorts system. Information on DarwinPorts is available at http://darwinports.opendarwin.org. The Portable.NET DarwinPort script file is at http://pnet.darwinports.com. Since the 0.6.2 release, bug fixing continues apace, SWF continues to improve, System.Xml is being actively worked on, and Rhys Weatherley continues to work on the C compiler. Version 0.6.4 is about to be released, and details will be in my next column.