Anders Hejlsberg demonstrated the dynamic programming features of C# 4.0. Very cool was C# calling JavaScript code without extra casts, calls to Invoke, and the like -- just straight function calls in C# that happen to be implemented in JavaScript. Even cooler was porting the JavaScript code to C#, which is nearly trivial because of the new support for late-bound types.

However, what really got the audience going was the demo of C# futures. This is stuff that isn't shipping soon, but the C# team is working on it and obviously felt good enough about the direction to show an early demo. The main feature was the exposure of the compiler as a reusable, inspectable object. To demonstrate this, Anders showed a run-time expression evaluator, and built a very, very simple but very cool C# shell with it. What's cool is that the evaluator can be stateful, so he could type an expression that defined a function, and then later type a different expression that referenced that function. Good stuff is coming from the C# team. :-)