Generics, generics

by Miguel de Icaza

Martin reports: * baulig just compiled his first "Hello Generic World" :-)

The Mono C# compiler today compiled it first generics program (see the various generic tests on CVS). It is still lacking support for method overloading. All the goodies are in mcs/gmcs (the special tree for our generics compiler).

Paolo had previously added the Generics support to our class libraries (System.Reflection and System.Reflection.Emit) and added the code to JIT generics code. This was helped enormously by Jackson's earlier work on the IL Assembler which was already generics aware.

In .NET 2.0, Generics are part of the instruction set, and the metadata in an executable. Some of the advantages of this approach vs the C++ mechanism of having the templates defines in .h files is that we keep getting the performance increase from having the generics information "pre-compiled". Those of us with a Turbo Pascal background, cant help but think `These are like the Turbo Pascal Units (TPUs): they were just so much better than C libraries and header files'.

Its surprising how a good idea like TPUs did not take over the industry, and instead the C libraries and headers was kept on use for so long. GC was also around a long time ago, and it is surprising that today C and C++ are still the standard for software production.

Monodoc progres

Even more progress on Monodoc. Ben now got an `error messages provider', and we have included all the errors mcs produces (all 311 of them) with sample files in the documentation. Mandatory screenshot

Posted on 28 Aug 2003