How It All Started…AKA the Birth of the CLR

Hello everyone, I am the Lead Architect of the CLR/UIFX group and the Chief Architect of the .NET Frameworks. I was thinking about what I should put in the first entry of my blog… as one of the founders of the CLR I thought it would be interesting to give you some history of how CLR was born in my blog’s intro entry.

 

Before the CLR I was working on JVM. When Mike Toutonghi, Peter Kukol, Anders Hejlsberg, and I realized that the JVM would not give us the flexibility to innovate in the places we cared about - support for other languages, deep interop with COM and unmanaged code, extensive frameworks to expose MS technology - we decided to join force with the COM team and form a new group, tentatively named COM 2.0.

 

We soon disagreed about object management, specifically about explicit management like COM (AddRef/Release) versus automatic management (Garbage Collection), we decided to form 2 groups: COM+ and CLR. This marked the birth of the CLR group.

 

Early on, we were joined by a meta data group who had been prototyping some meta data schema for the C++ compiler. Peter Kukol and the C++ group collaborated on the IL instruction set. I designed the architecture of the runtime and wrote the Garbage Collector (and yes the GC prototype was was written in Common Lisp first and I wrote a translator to convert it to C++).

 

Soon we had all the fundamental components of a runtime, some runtime helpers for the base classes (String and Object), and a new cool language: C#. We were in the business to build the full fledge CLR and the Framework.

 

So there you go, for those curious minds this is how CLR was started.

 

In the next blog entry I will be writing about server modeling. Also feel free to let me know if there are specific topics you want to see me write about.

Comments

  • Anonymous
    November 22, 2006
    Many people know Patrick Dussud by his outstanding work on Garbage Collection. But did you know he was

  • Anonymous
    November 22, 2006
    The first article was a great recap. I would love to see an article on the extensability features of the CLR. Thanks Shailen

  • Anonymous
    November 22, 2006
    Can you talk about how much of the problem with the JVM was technical and how much political?

  • Anonymous
    November 23, 2006
    Не так давно начал свой блог самый главный разработчик .Net CLR и вообще хороший человек Patrick Dussud

  • Anonymous
    November 23, 2006
    In your future blogs, I would like to read more about GC.

  • Anonymous
    November 23, 2006
    Great Post Patrick! Looking forward to more insights on the CLR.

  • Anonymous
    November 23, 2006
    Great stuff Patrick, and welcome to the community! I wonder at what point did the COR name appear?

  • Anonymous
    November 23, 2006
    In Common Lisp? Great! Can you write more on this topic?

  • Anonymous
    November 24, 2006
    server modelling ---- how about a bit of its  history too. seriously,the  above history was great.

  • Anonymous
    November 24, 2006
    I'd like to read about WHY you used LISP at first. Nice Post. A bit short perhaps ;)

  • Anonymous
    November 26, 2006
    Patrick , one of the founding members of the CLR team, starts a blog by posting a brief bit about this

  • Anonymous
    November 26, 2006
    The comment has been removed

  • Anonymous
    November 27, 2006
    I'd like to know what order the pieces were built in (specifically: metadata, IL and the JIT compiler, the GC, the security subsystem, AppDomains). It would also be interesting to know what were the goals and the constraints that guided design choices (for instance, why not build a simpler runtime, like a garbage-collected environment for C++, without IL?)

  • Anonymous
    November 27, 2006
    Vous l'avez sans doute déjà lu, Patrick Dussud , ouvre un blog . Patrick Dussud est un des ingénieurs

  • Anonymous
    November 27, 2006
    About Common Lisp and Lisp in general: I have worked on Lisp for many years, and I think it has strength that sets it apart from other dynamic languages. My favorite is the fact that you can extend the Lisp language to create your own special purpose language in a very natural way using macros. Lisp has a very simple syntax (prefix notation). As long as your extensions adhere to that syntax, it is possible to make them seamless. Arguably, CLOS is a very large extension to Common Lisp, even though you don't need any compiler changes to do a pretty good job implementing it on top of regular Common Lisp. Last year, I gave a talk at the International Lisp Conference about the need for Lisp to integrate with the CLR (and / or Java). See the following URL http://www.international-lisp-conference.org/2005/speakers.html#patrick_dussud

  • Anonymous
    November 27, 2006
    The comment has been removed

  • Anonymous
    November 27, 2006
    The comment has been removed

  • Anonymous
    November 29, 2006
    The comment has been removed

  • Anonymous
    December 03, 2008
    The comment has been removed

  • Anonymous
    January 02, 2009
    "Other limitation were contractual. We discovered that the compliance test suite didn't allow us to extend the existing Java classes so it was hard for us to reflect the Windows platform with more fidelity."

  • Anonymous
    March 22, 2010
    Patrick, Start was GREAT! Tell us about CLR history more, please...