The .NET Foundation and .NET Platform Innovation

.NET has been a bedrock of the Microsoft developer ecosystem ever since its initial release more than 12 years ago.  The over 6 million professional developers using .NET have built some of the most important software and solutions powering businesses, apps and sites today, and the 1.8 billion installs of.NET across devices have created a key foundation for productive application development.

Today, I am thrilled to share with you some important updates on the .NET platform, including a wide array of important innovations around .NET as well as the creation of the .NET Foundation to foster further innovation across the .NET ecosystem.

The .NET Foundation

Earlier today we announced the formation of the .NET Foundation, an independent organization created to foster open development and collaboration around the growing collection of open source technologies for .NET.  The .NET Foundation will serve as a forum for commercial and community developers alike with a set of practices and processes that strengthen the future .NET ecosystem.

As I highlighted recently, we have seen a significant increase in the amount of open source software that makes up the foundation of the .NET development ecosystem, both from Microsoft and from other developers in the .NET community.  The .NET Foundation builds upon this trend, and further helps the open ecosystem for .NET to flourish.

The .NET Foundation will start with 24 .NET open source projects under its stewardship, including the .NET Compiler Platform (“Roslyn”) and the ASP.NET family of open source projects, as well as the MimeKit and Mailkit libraries from Xamarin.

Our shared goals for the .NET Foundation are:

  • Open the development process for .NET: The .NET Foundation brings under a common umbrella existing and new relevant open source projects for the .NET platform, such as ASP.NET, Entity Framework and the recently released .NET Compiler Platform (“Roslyn”). The .NET Foundation will help establish this as the norm moving forward, so more and more .NET components and libraries can benefit from an open process that is transparent and welcomes participation.
  • Encourage customers, partners and the broader community to participate: The .NET Foundation will foster the involvement and direct code contributions from the community, both through its board members as well as directly from individual developers, through an open and transparent governance model that strengthens the future of .NET.
  • Promote innovation by a vibrant partner ecosystem and open source community: The .NET Foundation will encourage commercial partners and open source developers to build solutions that leverage the platform openness to provide additional innovation to .NET developers. This includes extending .NET to other platforms, extending Visual Studio to create new experiences, providing additional tools and extending the framework and libraries with new capabilities.

The .NET Foundation represents a key commitment to the open .NET ecosystem, and I look forward to what we will be able to deliver together via the Foundation.

.NET Innovation

Over the last 12 years, the .NET platform has delivered dozens of major innovations across the runtime, language, libraries and tools.  From projects like Language Integrated Query to the rich ASP.NET framework and more recently the Async/Await features for asynchronous programming, .NET has been a leading platform for productive application development in the industry.

Today, we had a chance to unveil the next batch of exciting innovations in the .NET platform, running the gamut from core runtime features to enabling new developer productivity tooling.  Together, this wave of .NET innovation represents an important next step for the .NET platform.

The .NET Compiler Platform - "Roslyn" (preview)

The .NET Compiler Platform project, known as "Roslyn", includes the next versions of the C# and VB compilers, as well as a compiler-as-a-service API that powers rich IDE integration, and opens up the compiler to all sorts of developer integrations. 

Today, the .NET Compiler Platform was released as open source by Microsoft Open Technologies, with the development team now working on CodePlex.  The open source compiler platform will enable a broader community of developers to contribute to the evolution of the project and to integrate the .NET compilers into a wide variety of projects.

The .NET Compiler Platform preview release also includes several new IDE features, highlighting what’s possible on top of the new platform.

It's not just Visual Studio that benefits from the open source .NET compiler platform.  Today at //build/, Miguel de Icaza of Xamarin showed how the .NET Compiler Platform can be used to provide a rich C# IntelliSense experience in Xamarin Studio running on a MacBook.

Open sourcing the .NET Compiler Platform and the C# and VB compilers opens up countless new opportunities for tools and services to be built around .NET.

C# and VB language Innovation (preview)

The preview versions of the C# and VB compilers included with today's .NET Compile Platform include an early look at some of the new features being considered for the next major version of the C# and VB languages.  Features like primary constructors, auto-property initializers and using statics generally help developers express common code patterns in an even more streamlined way.

// Using static class
using System.Console;
 
// Primary constructor
class Point(double x, double y)
{
    // Auto-property initializers and getter-only auto-properties
    public double X { get; } = x;
    public double Y { get; } = y;
    public void PrintMe()
    {
        WriteLine("{0}, {1}", X, Y);
    }
}

.NET Native (preview)

The developer productivity of C# and .NET has been a core value proposition for the .NET platform.  With .NET Native, we are marrying that productivity with the ability to generate binaries with performance on par with native code. 

.NET Native is an ahead-of-time compiler for .NET which leverages our C++ compiler's optimizer to offer improvements to startup time, memory usage and overall application performance.  Today's preview release lets developers try out this new compilation technology for Windows Store applications targeting X64 and ARM. 

Read more about .NET Native on the .NET blog.

Next-gen JIT and SIMD (preview)

At the core of .NET, we have been working on a next-generation JIT for .NET and the CLR.   Today, we released the third preview release of this new .NET JIT compiler (codename "RyuJIT"), offering significant benefits to application startup and performance transparently to application developers.

Today’s preview is the first to also enable new developer scenarios, such as providing new .NET APIs that can leverage the SIMD (Single Instruction, Multiple Data) support in modern processors for SSE2 and AVX instruction sets.  In this example, floating point arithmetic in a tight loop is vectorized, significantly increasing overall throughput.

Vector<float> reals = vx;
Vector<float> imags = vy;

do
{
   // This work will be vectorized using hardware SIMD instructions
   reals = reals * reals - imags * imags + vx;
   imags = reals * imags + reals * imags + vy;
 
   // … do more work …
 
} while (!done);

The SIMD APIs are available on NuGet.

Xamarin Partnership

Last November, we announced a partnership with Xamarin to enable C# and Visual Studio developers to target additional mobile devices including iOS and Android. 

By using .NET Portable Class Libraries, developers can easily share libraries as well as application logic across their device applications as well as with their backend implementations. 

Visual Studio and .NET offer outstanding developer productivity for application developers targeting the Windows family of devices.  With Xamarin, developers can take this productivity to iOS and Android as well.

.NET Mobile Services

Azure Mobile Services provides an easy-to-use mobile backend as a service connected to Microsoft Azure.  Last month, Scott Guthrie announced the preview availability of .NET support for Mobile Services, and today, we've taken this another step forward.

With .NET mobile services, you get the simple API connection to Azure-hosted data storage, combined with the flexible ASP.NET Web API for customizing table behavior.

Project "Orleans" (preview)

Based on work started in Microsoft Research, "Orleans" is an actor-based cloud programming model, offering a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. Orleans was designed for use in the cloud, and has been used extensively in Microsoft Azure. 

Read more about Orleans on the .NET Blog.

Conclusion

.NET is one of the world's leading developer platforms, and a critical technology for Microsoft and millions of developers worldwide.  The .NET Foundation will foster open development and collaboration around the growing collection of open source technologies for .NET, supported by Microsoft and other organizations investing in the .NET platform.  The next wave of .NET innovation being previewed today represents a huge step in the evolution of the .NET platform.

And this is just the beginning, the pipeline of innovation in .NET is in full gear leading up to the next version of .NET, with features to help you create the next generation of applications across Windows Server and Azure, as well as the desktop and devices.

Namaste!

Comments

  • Anonymous
    April 03, 2014
    Sounds very interesting. Great direction. However, what use is an open source compiler if the CLR and class library isn't?

  • Anonymous
    April 03, 2014
    Where does the Compact Framework (currently version 3.9) sit with all of this? Is it at the end of the road? If so it would make sense for it to be Open Sourced. Windows Embedded CE/Compact developers would like this.

  • Anonymous
    April 03, 2014
    Nice for Mono and Xamarin :)

  • Anonymous
    April 03, 2014
    That's a lot of good news, but it would be nice to open-source XAML and WPF (especially) as well.

  • Anonymous
    April 03, 2014
    Guys, the NET Native is WRONG THING !!! I fully agree with idea of unlocking more speed from .NET, but NET Native is wrong direction. NET is slow in multiple areas, because you limited options with all-or-nothing philosophy. NET Native is about creating more mess to NET world, than fixing obvious problems within NET itself. You must try to extend NET to reduce overhead and fix wrong paths, than providing convoluted and limited workarounds like NET Native. To be more concrete, you should consider few improvements to NET itself:

  1. Give us ablility to generate app/library files with IL AND/OR NGEN-ed code. This solve problems with slow startup and code obfuscation. Within single files you can include ngen-ed code for diffrent CPU architectores.
  2. Give us ability do disable runtime type checking, array bound checking and others. Best way to do it is to use attributes. Type safety is great when aplication is developed, but when code is flawless, then this feature is useless overhead. Of course, some scenarios requires type checking all the time, but these are minority.
  3. Give us more control on GC and memory management. Most overhead come from checking references betwen objects, and we want to disable this checking on givent object (and his subobjects) to improve performance. This can be done by method GC.SetCheckReferences (obj, bool). Additionaly give us option to remove particular object from memory on demand, by adding method GC.Remove (obj). These improvements do not break any compatibility and can improve performance in multiple areas. On the other hand, NET Native only reduces startup time (in most significant way), which can be easy achieved by traditional ngen-izing IL binaries at instalation time. This way NET Native is useless. Latest lesson MS gained from DX11 vs Mantle, lead to simple equation: more control = more speed. Do it with .NET
  • Anonymous
    April 04, 2014
    @TBRMDEV: It looks like you've left the same comment on this blog as you left on the .NET blog. There are a couple of responses to your suggestions there. Take a look at this page for our responses: blogs.msdn.com/.../announcing-net-native-preview.aspx

  • Anonymous
    April 06, 2014
    So, with native compilation, is the end result different to running NGEN on your assembly?

  • Anonymous
    April 07, 2014
    @Darren: No, these binaries are radically different from those produced by NGen. The performance numbers we're using--up to 60%, 40% average for the top Windows Store apps we measured--are in comparison to NGen, not to JIT.