Joshua Goodman’s session on CLR futures was packed – the crowd of developers wanted to learn what’s been cooking under the hood for the past couple of years. Without a major CLR upgrade since 2005 (CLR 2.0), we all had our appetites whetted.
So to begin with, Joshua announced that as of 4.0, multiple versions of the CLR can be hosted in the same process. For example, an application leveraging CLR 4.0 will run on top of CLR 4.0, but will be able to load and interact with a module that requires CLR 2.0 and will run on top of CLR 2.0. (IIRC, this was already baked into the Silverlight version of the CLR.)
Another announcement Joshua made is that the source for the TLBIMP utility (used for COM interoperability) is hosted on CodePlex, making it possible to augment and correct problems with the generated interop assemblies for each specific project. This relates very well to the No-PIA feature I covered in an earlier post.
Similarly, P/Invoke interoperability solutions will benefit from the P/Invoke “Wrapping Tool” – which I believe to be a slightly updated version of the P/Invoke Interop Assistant. It can take any C/C++ header file and generate equivalent (albeit not always correct) P/Invoke signatures for managed languages to consume.
As part of the support for dynamic languages (DLR), the BCL now includes BigInteger (revived from 2007!) and Tuple classes (C++0x variadic templates would really be helpful here!), and a slight bug with tail recursion was fixed in the 64-bit JIT.
We live in exciting times – and this is not all that was unveiled in the session. Stay tuned for part 2 to discover what’s new around exception handling, dump debugging, GC latency and 64-bit code.