Galin Iliev's blog

Software Architecture & Development

C# 3.0 Compiler milestones

Luke Hoban, Program Manager for the C# Compiler posted blog article how is schedulled job for C# 3.0 compiler. This show what are new things and when we could expect to touch them:

Milestone 1

Our first goal was to get the most fundamental new language features implemented, so we could begin building LINQ applications with the Orcas compiler as early as possible.  Many of the features in this first set were also chosen because they were pre-requisites for implementing some of the later language features.  For example, lambdas were important to get in early, because the conversion of lambdas to expression trees depended on this.  Here's what we built first:  

  • Local Variable Type Inference (var)
  • Lambdas
  • Object Initializers
  • Extension Methods (usage)

Milestone 2

For our second milestone, our goal was to replace the C#3.0 prototype compiler that we had shipped with the May 2006 CTP.  When we finished this milestone, we actually moved all of the teams internally who were using C#3.0 over to use the Orcas C# compiler.  This required implementing:

  • Lambdas bound to Expression Trees
  • Extension Methods (definition)
  • Collection Initializers
  • Anonymous Types
  • Query Expressions

Milestone 3

The third milestone was shorter, and our goal for this milestone was to get to a good state for the first Beta.  The results of this milestone are what you'll see in the Orcas February/March CTP and the first Orcas Beta.  We also implemented one of the most requested language features in the history of C# - auto-implemented properties!

  • Auto-Implemented Properties
  • Enhancements to Collection Initializers
  • Non-language features, such as debuggability improvements

Milestone 4

We're now working on the last feature milestone for Orcas.  We're finishing off with one more language feature and a lot of work to improve compiler fundamentals, such as error messages and performance.  Note that this work won't make it into the first Beta:

  • Partial Methods
  • Compiler Error Message Improvements
  • Compiler Performance
  • Compiler Generated IL Performance

It seems most of the features are implemented and we could see them in CTPs. We can touch most of them except Partial Methods. It looks like MS shaped the main VS Orcas features and they will shine them in next months before they release version 9.