Announcing Microsoft Roslyn June 2012 CTP

Good afternoon all, I am happy to announce that we are releasing a second Community Technology Preview release of Roslyn, the project I actually work on, today. I am super excited!

So, let’s cut to the chase. Key facts:

Roslyn is a library of code analysis APIs useful for building compilers, development environments, refactoring engines and so on. It supports lexical, grammatical and semantic analysis of C# and Visual Basic. And it is awesome.

The C# semantic analysis engine now supports most, but not all, the C# language features. In particular, query expressions, anonymous types, anonymous functions and iterator blocks are now supported. The largest not-yet-implemented features are the “dynamic” feature from C# 4 and the “await” feature from C# 5. Nullable arithmetic mostly works but the code we generate is non-optimal; I haven’t had time to write an optimizer yet.

We are giving you this sneak peek in order to get your feedback on the API design and related features such as the interactive window. Please post any comments you have to the Roslyn forum, and not to this blog. We have a team of awesome program managers who are gathering feedback from the forums and using it to help us tune the APIs to be as useful as possible for you all. We’ll certainly take bug reports, but constructive feedback on the APIs is what we are going for here.

"However, we want to enable anyone who has VS 2012 installed to explore the Roslyn APIs and use the C# Interactive Window. To allow this, the CTP refresh will install on both Visual Studio 2012 RC and Visual Studio 2010 SP1 (note that VS 11 Beta is not supported)."

Do you know if it will be an option you can select when installing VS2012, or you would have to download and install separately?

Also do you know if there is anything similar in the works for C++ or Javascript?

Another question Eric, do you think it's a good idea to use Visual Studio macros as for ad-hock refactoring routines based on the Roslyn assemblies? Does Roslyn know anything about EnvDTE90 namespace? Thanks!