Regular readers of my blog will know that from time to time I post some historical notes related to the research projects I’ve been involved in at Microsoft Research.
Recently, I was asked some historical questions about our work on .NET Generics in 2001. To help frame an answer, I thought I’d post one of our research project outputs from 2001 as part of the .NET Generics project.
The attached document is the “GC#” (Generic C#) language design specification from December 2001, written by the Microsoft Research Cambridge generics team (Andrew Kennedy, Don Syme, Claudio Russo). At one point, we had kept a copy of the spec chained to a table, and anyone around the building could write comments on it! With Dave Berry’s help we later published a version of the corresponding code as the “Gyro” variant of the “Rotor” CLI implementation. Andrew Kennedy’s page at MSR contains some of our academic publications about .NET and C# Generics.
I remain very happy with the methodology we used for this research project and associated tech-transfer. Like the Generic CIL document (which eventually got folded into the ECMA-335 standard for CIL), this particular spec doc is, I think, particularly interesting for two reasons. Firstly, in it, we can see some of how language features take on their final form. Secondly, from the perspective of research-project-management, it indicates some of what a research team need to do to take a langauge feature towards release. There was still plenty of work left to do, as indicated by the many “TODOs” and comments in the spec, and in truth a few features were added to “make sure there is something to cut” (language geek game: see if you can spot them!)
However, when I read the attached 57 page spec, what surprises most are the minor details! Any .NET programmer will spot them and enjoy a good chuckle, and many are called out in the comments.
So, I hope those of you interested in this line of research enjoy the document and find it a useful part of the academic research record which Microsoft Research contribute to.