Product Review
.NET Becomes an ISO Standard
Digg This!
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 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.