Microsoft has announced the first developer preview for .NET 6, which is scheduled for November 2021 as a long-term support (LTS) release. This release will include major improvements for cloud, desktop, and mobile apps, as well as deliver on the .NET unification vision.
According to Microsoft, .NET 6 centered around a more open planning process, enabling developers to see the release at a broader scope, provide feedback on what features to prioritize, and make it easier to find engagement and contribution opportunities.
A key theme around this release is improving startup and throughput using runtime execution information, such as profile-guided optimization (PGO). According to Microsoft, PGO helps optimize native code in binaries, making it easier to be executed by a CPU. In .NET 6, Microsoft will add new tools for PGO training and data manipulation, publish training data for .NET libraries, enable collecting training data, enable the JIT to use static training data at runtime, and enable the JIT to generate and use dynamic training data at runtime.
“We expect that PGO can deliver wins on the order of 10% for startup and throughput. For compute-intensive workloads, the benefit could be greater. We expect to need two releases to deliver the full breadth of our vision. We are still defining the exact set of .NET 6 deliverables for PGO. We want to build the right long-term architecture (that avoids re-work down the road or cutting off future opportunities) while delivering compelling new value in this release. We hope to transition to using the new PGO tools (ourselves) in this release. Enabling PGO as a standard feature of .NET will be a significant step forward for the ecosystem,” Richard Lander, program manager for the .NET team at Microsoft, wrote in a post.
.NET 6 will also include a new project called fast inner loop, which is designed to make builds run faster. It is also defining a new hot code release model.
The next version of .NET also includes several improvements around containers, such as improved scaling, reduced container image size, increased startup and throughput performance through version bubbles and modern vector instructions, and large page support.
Other new features include Blazor desktop apps, improvements to Arm64, new .NET CLI features, directives, new libraries, improved support for Windows ACLs, portable thread pool, support for Apple Silicon, and more.
“.NET 6 promises to be another exciting release with many compelling improvements. It is a particularly interesting release because it contains changes as a result of needing to adapt to externally focused operating system evolution, and also continuing to innovate within the .NET platform itself. It is also the continuation of increased openness from the .NET team, both in terms of open planning but also sharing previously proprietary performance tools,” Lander wrote.