What do you want to hear about

I'm a developer on the C# compiler.  I've been with the team since before we shipped 7.0.  I worked on some of the XML doc comment stuff, fixing up the sources so they could cross-compile for rotor, ia64 and amd64, and also now in Whidbey I am responsible for most of the implementation (and bugs) for anonymous methods and iterators.  In my spare time, I'm a happy father that occasionally tinkers with my old PocketPC and writing developement tools for that.  So amongst all those areas of interest ask away and I'll see what I can answer in my next blog.

--Grant

Comments

  • Anonymous
    January 28, 2004
    Woo, C# compiler devs are great for blogging.

    Take a look at http://weblogs.asp.net/cbrumme, and then start writing about the internal workings of the compiler.

    How does overload resolution work?
  • Anonymous
    January 28, 2004
    Are there are plans to expose more of CSC through managed APIs? One thing I think would be a killer feature is a working implementation of ICodeParser. This would be really useful for lots of reasons.

    Jim
  • Anonymous
    January 28, 2004
    The comment has been removed
  • Anonymous
    January 28, 2004
    I'm interested in anything to do with c# performance. How did you get the performance so good and what should we do to improve performance in our own code.

    Cheers.
  • Anonymous
    January 28, 2004
    Woo! Sounds like you'll have some interesting things to talk about.
  • Anonymous
    January 28, 2004
    It's tricky to separate compiler questions from language questions from VS questions but here goes.

    I develop test-first with NUnit. I have my tests in separate .cs files in the same project so that I can access "internal" members for testing (rather than needing to make them "public"). However, there does not seem to be a way to excude these test files from a Release build. Ideally, I would like to be able to specify for each class file etc, whether it should be in the build for the configuration. As I don't want to expose all my tests in my released program, I am left with excluding the test .cs files manually before I build.
  • Anonymous
    January 28, 2004
    I don't know if you are still involved with XML doc comments, or are involved in the IntelliSense support for it, but there are a few things that have been bothering me.

    - Why, when adding XML doc-comments to a delegate type (in C# code), aren't there any stubs added for the arguments?

    - Why is only a subset of the 'official' tags supported by intellisense, but not e.g. <para> or <paramref>? They don't show up in the completion popup, and for paramref it would be handy if the name attribute would show a completion list...
  • Anonymous
    January 29, 2004
    nice to read something like this "What do you want to hear about"
    i will say , say anything :)
    we r eger to here u wheter it is personal or professional
    enjoy bloging. don't make oblegation on u so that u can enjoy it
  • Anonymous
    February 05, 2004
    Great to see another C# dev blog! Since it's your area, I'd love to hear some details about how anonymous methods and iterators are implemented in the compiler. It would also be interesting to hear your take on how these language features permit a functional programming style and why (or why not) that is a good thing (this paper called "Why Functional Programming Matters" is fun: http://www.math.chalmers.se/~rjmh/Papers/whyfp.html).

    For example, Anders has talked a little about closures and how the local variables are pulled onto the heap so that the environment can out-last the call stack if necessary. How does this work? Could you give us an example that shows roughly what the compiler translates an anonymous method with variable captures into (some IL would be good)? Does this really make it a true closure? For instance, value types must be copied and so won't affect the value in the original environment, right? How is this similar to and different from closures in functional languages like lisp or Haskell. Even writing a bit about what closures are and how a functional programming style can be beneficial would be great. Now that C# is supporting some functional-style concepts, there are probably a lot of OO developers who would be interested in an introduction to functional concepts.

    Also, Anders has said that iterators are just unrolled into state machines. Isn't this a little challenging? How does the compiler achieve this? Again, some examples showing the translation would be interesting. There must be some cases that are tricky to get right. In fact, I'm sure you could write multiple seperate posts on all the edge cases and problems with implementing these compiler features (similar to Chris Brumme).

    I can't wait to hear more from you!
    Thanks!
    Rick
  • Anonymous
    March 23, 2004
    How can a Remove method in a linked list work (using anonymous methods) without re-constructing the whole list? See
    http://blogs.gotdotnet.com/marcmill/commentview.aspx/0bf6c72a-050d-46f5-a254-57fb85303975