For the last six years you've heard us go on and on about this Roslyn thing and how it's the platform for the future and would change everything and that we were all-in on it and "it's going to be great just wait and see". Well, the wait is over. This morning, at BUILD, Principal Program Managers of the Managed Languages Team Mads Torgersen and Dustin Campbell showed during their "What's New in C# 6 and Visual Basic 14" talk that Roslyn is here and Roslyn is ready. As of yesterday Roslyn has a "Go-Live" license.
This is the culmination of over half a decade of design and investment from some of the brightest minds at Microsoft and in consultation with you, our very passionate community, and with this latest release (included in Visual Studio 2015 RC) we're throwing the doors wide open for all of you to join us in realizing a phenomenal return on that investment!
What does "Go-Live" mean?
First, it means that the C# 6 and Visual Basic 14 compilers are language complete and officially supported by Microsoft for use in production environments.
Secondly, it means that the .NET Compiler Platform ("Roslyn") APIs are officially supported by Microsoft for use in production environments. That means that you can get started writing (and shipping) your own code smart tools, refactorings, diagnostics, fixes, and whatever else you can imagine. And most excitingly it means you can start making your new and existing .NET libraries Code Aware Libraries.
If you hadn't heard, a Code Aware Library is a .NET library distributed via NuGet which comes with domain-specific guidance like live code analysis and code fixes to ensure correct usage and that consumers follow best practices. We feel this is the next evolution of what it means to ship a .NET library and that over time analyzers will be as essential to library authoring as doc comments are today. In fact, the Azure SDK team is shipping a Code Aware Library right now to ensure their developers write the best Azure apps possible.
You'll hear us talk a lot more about .NET Analyzers and Code Aware Libraries in the near future but I highly recommend checking out these resources and getting started writing analyzers now:
- Alex Turner's 5-minute Channel 9 intro to Code Aware Libraries
- My 20-minute intro to writing .NET Analyzers.
- Dustin Campbell's deep-dive into "Analyzers and the Rise of Code Aware Libraries" at BUILD 2015.
And also check out these cool community created analyzers:
Does this mean that Roslyn is done?
Roslyn v1.0 will RTM alongside Visual Studio 2015 (because it powers the entire code editing experience inside of VS it kind of has to). Our team will be working hard until then fixing any problems discovered and tuning performance. But we're already imagining opening more scenarios beyond v1.0 for after RTM. Ever since our first CTP in 2011 enthusiasts and tools developers have engaged us with their feedback and their aspirations and that engagement has only grown in the last year since we open sourced. We're listening and have accumulated a backlog of proposals for new APIs that we have a strong interest in and some of which we've already begun actively investigating:
- C# and Visual Basic Scripting APIs (and Interactive) continue to be top of mind in this category. We know just how these APIs will open up exciting new experiences for everyone and will ship them with a go-live license as soon as we can.
- There's also a strong interest in a richer set of APIs for analyzing control flow graphs that we know would enable powerful diagnostic analyzers like dispose checking and nullability detection.
- We're also looking into new APIs for analyzing semantic trees in an efficient and language-neutral way to broaden the set of analyzers which can be written once and work equally well for both C# and Visual Basic.
And the list (and Roslyn) goes on.
Call to Action
If you're a library author, get started making your library a Code Aware Library NOW. Or if you're just a dev looking to make some tools to help them analyze codebases, code faster, or find and fix mistakes sooner, download the SDK and see how Roslyn can help. And even if you're not even remotely interested in any of that stuff, that's OK, you can start using expression-bodied members, getter-only auto-props, string interpolation, the null-conditional (?.) operator and other new language features to remove boilerplate, make your code cleaner, and modernize your existing projects right now. But no matter which of those describes you, you can always join the discussions on GitHub and UserVoice to engage the product team and help shape the futures of C# and Visual Basic.
Regards,
Anthony D. Green
Program Manager
Visual Basic, C#, and F# Languages Team