HomeDigital EditionSearch Dotnet Cd
ASP.NET C# Certification Exams The CLI Data Access Editorials Extending .NET Fundamentals Interoperability Interviews Migrate Mobile .NET Mono .NET Interface Object-Oriented Programming Open Source Optimization Product/Book Reviews Security Source Code UML Visual Studio .NET

It has been another good month for open-source .NET: .NET has become an ISO standard, and both DotGNU and Mono achieved milestones I mentioned last month.

ISO Standard
The ISO (International Standards Organization) has ratified the ECMA (European Computer Manufacturers Association) .NET standards. Because ISO recognizes the ECMA standards and can use them as the basis for ISO standards, the ISO committee responsible for .NET-related standards is a special "fast track" committee. The changes the ISO committee made to the standards before accepting them have also been ratified by ECMA, which has released them as the second edition of the ECMA .NET standards. These are still version 1 specs and are not related to version 2 of .NET and C#, due out next year. The ECMA standards can be downloaded for free from www.ecma-international.org. Click on Publications, then click on ECMA Standards "index" and scroll down to "C# and CLI", where you can click on ECMA-334 or ECMA-335. The ISO standards can be found at www.iso.org/iso/en/Catalogue_ListPage.CatalogueList? ICS1=35&ICS2=60&ICS3= under ISO/IEC 23270: 2003, ISO/IEC 23271:2003, and ISO/IEC TR 23272:2003, but there is a fee for accessing them.

DotGNU 0.5.6
This release shows that DotGNU's focus on ECMA compatibility is really paying off. On April 25th DotGNU announced that their mscorlib.dll is now signature compatible with the .NET SDK Version 1.1 mscorlib.dll, and contains no unresolved "todos" (programmers use todo comments to mark sections of code that are incomplete, or contain known bugs). Being signature compatible means that all classes and other objects have been stubbed out correctly; all enums have correct names and values; and function parameter types and names match, including case. More important, all of the functions in mscorlib.dll are finished. They are complete, with no todos; of course, further testing could uncover some bugs. But that's not all! Of the 860 classes in the mscorlib.dll, 730 are complete with no todos left. The 300 ECMA classes are complete, minus a bug or two. This leaves DotGNU in good shape for a 0.5.8 release in mid-June, and a fully ECMA compatible 0.6.0 release in late June. The classes needing the most work are in the Reflection.Emit, remoting, and policy objects classes.

Mono Ships 0.24
Mono has released version 0.24 and is on track to release version 0.25 in mid-June. 0.24 was a big release for Mono, with major changes everywhere. The new "mini" JIT (just-in-time compiler) I discussed last month has replaced the old Mono compiler. The System.Drawing namespace has been "virtualized"; this separates the implementation from the interface, and allows Mono to support implementations based on Winelib or GTK# (which are currently in active development), or other graphics packages, such as Cocoa on Mac OS X, in the future.

Compatibility issues between Wine and Mono have been resolved to the point of allowing SWF (System.Windows.Forms) to be included in a Mono release for the first time. Previously the SWF code and DLL was only available from version control. At time of writing SWF requires a special version of Winelib (included in the Mono 0.24 package), but by the time you read this, it may be working with the standard Winelib release.

The 0.24 release also included improvements in almost all of the classes, Mono Basic, XML handling, and the addition of two new encodings for Chinese.

All these big changes generated a flurry of post-release patches to fix integration and configuration issues, but the outcome of all this work is a faster, more robust Mono that will be better able to implement current and future versions of .NET.

Speaking of future versions of .NET, this release of Mono includes iterators, the first .NET version 2.0 feature to appear in Mono. Iterators make container classes such as lists, vectors, and dynamic arrays easier to write. Other .NET version 2 enhancements will be added to Mono as the team finds time to implement them. (Note that DotGNU already has many version 2 features such as generics [templates], as does Rotor, the Microsoft version of .NET for FreeBSD).

Open-Source Java
The IKVM project's goal of recompiling Java bytecode to IL code and providing Java class libraries for the IL code is moving along. DotGNU also has a project to compile Java source code to IL code. The two groups have agreed to work together on a common interface to the Java class libraries; this will allow them to share the work of re-creating the Java libraries they will both need for true Java compatibility.

IKVM and Mono have progressed to the point that IKVM can run the IBM Eclipse IDE (similar to Microsoft's Visual Studio) on Mono under both Linux and Windows. That such a complex application can run on IKVM and Mono demonstrates the advanced state of Mono and IKVM, and also proves that Java can run on top of the .NET runtime. A Windows screen shot can be seen at www.go-mono.com/images/ikvm-screenshot.png.

About The Author
Dennis Hayes is a senior software engineer at Raytek Corporation in Santa Cruz, CA, where he writes process control software. He has been involved with the Mono Project for over a year, and is in charge of the System.Windows.Forms and System.Drawing namespaces. dennish@raytek.com

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.

  E-mail: info@sys-con.com