I’ve run out of ideas again

In case you haven’t noticed, I’ve run out of ideas to write about.  I’m sure there’s still a few things I know that I haven’t explained, btu I can’t remember them…

If you’ve been dying to know something about the C# compiler, ALink, CLR file formats, 64-bit JITs, please ask,a nd I’ll see what I can do.


Comments (9)

  1. I’d love to know more about the compiler. If you’ve already blogged about this (or others have, my appologies)

    How about some cool things that the C# compiler can do that might not be commonly known? For example C++ compilers by virtue of macros can do some really neat things to aid performance of in the code, recursive macros come to mind. In C++ those may or may not be a good idea depending on the situation; but in regards to C# are there any compiler tricks that come to mind?

    How much optimization does the C# compiler do, iirc the C++ compiler does more optimization of its il output. But this is something i read/heard with the v1.0/1.1 versions. Beyond new language features of C# what’s new in the compiler for whidbey?

    What are some interesting features that were considered and didn’t make it into the compiler? What might we see with the version beyond whidbey?

  2. Eric Wilson says:

    I’m curious why the following is illegal:

    class A


    public static Foo()




    class B


    public DoStuff()


    A myA;

    myA.Foo() // <—This line blows up the compiler



    I understand that this is illegal because the spec says so. But is there any reason this is illegal in the first place?

  3. orangy says:

    Why it is forbidden to derive from delegates? It could be feature activated by "advanced" compiler switch for experienced programmers. For example, I’d like to have WeakDelegate, which has a meaning "notify me while I’m alive" instead of current "notify and hold me".

  4. Here are some ideas. This is not necessarily specific to 64-bit, but you seem to be working at the "bare metal" level.

    – Currently struct temporaries, often produced by operator overloads, are not optimzied. Maybe discuss why this is important and how/when it will be fixed. I know why it is important, but others may not. I bring this up because 64-bit is touted for numerical applicaitons, but the struct problem kind of kills perf in .NET applications.

    – Other basic optimization stuff. Why 64 bit might be better than 32, when. How the CLR will improve.

  5. I cannot believe you ran out of ideas!

    Could you please comment on inlining on 64bit platform. Could you talk about inlining with generics. Idiom where x86 code works in reasonable time and 64-bit code will cost unexpectedly much more? Memory models?

  6. Anything along the lines of "cool CLR stuff you might not know about coming in .NET 2.0" would be fun 🙂

    I have to second Frank’s suggestion about why/when 64 bit might be better than 32. There certainly has been a lot discussion about the disadvantages of 64-bit, a switch to the positive points (besides the obvious larger memory capacity) would be very interesting reading.

  7. I’d have to second the delegate question.

    I am also very interested in some of the restrictions on generic types. i.e why can’t a generic inherit from its parameter, why can’t we use "implicit" generic constraints, why is there no INumber interface. (Make it hard to write generic numerical libraries.)

    Generics seem to really answer the freshman CS collections problems while missing some of the more expressive power of C++ templates. I am sure there were good reasons for those restrictions, I would just be curious as to what they were.

  8. Wes Haggard says:

    I have a question for you. You may not be the right person to be asking this too but I will try anyways.

    A while back I posted http://weblogs.asp.net/whaggard/archive/2004/10/12/241476.aspx about having a generic type inherit from Attribute. Do you know why this is prohibited in C#?



  9. Eric Wilson says:

    Could you do a post on what the settings on the Advanced Tab in Visual Studio.Net for C# projects are for and when you should use them?