.NET 6 Release Candidate 1 Ships – Visual Studio Magazine
.NET 6 Release Candidate 1 Ships
Microsoft has shipped the first of two Release Candidate versions of .NET 6, which is expected to debut in November as a consolidation of all the disparate .NET developer tools components under one cross-platform open-source umbrella offering.
This groundbreaking, multi-year effort was supposed to culminate last year with the introduction of .NET 5 (itself from the .NET Core project, which spun off from the .NET Framework), but the ongoing COVID-19 pandemic and other problems delayed the effort for a year. Finally, however, all the missing parts – mainly Xamarin for mobile/client development (it’s now .NET MAUI, with desktop support) and Mono, a free and open source software framework compatible with .NET Framework.
The company’s development teams have been pumping new features and functionality into .NET 6 for months in a series of previews, more recently focusing on polishing them so the code has already been deemed ready. for real-world production testing. So today’s RC 1 announcement doesn’t focus on what’s new, but rather on core .NET 6 features, many of which won’t be fully realized for some time. Microsoft’s Themes of .NET site provides an overview of what to expect:
“In each release, we support a few projects that take many years to complete and (by definition) don’t deliver their full value for a while,” said Richard Lander, Program Manager, .NET Team, in a September 14. blog post. “Because these features haven’t fully materialized, you’ll notice a bias in this article about what we’re likely to do with these features in .NET 7 and beyond.”
Here is a capsule summary of these features highlighted by Lander:
- Source release: The GitHub repository for this says, “The primary goal of source code generation is to satisfy the official packaging guidelines of commonly used Linux distributions, such as Fedora and Debian. Many Linux distributions have similar rules. These rules tend to have two main tenets: consistent reproducibility and source code for everything.” Read more here.
Profile Guided Optimization (PGO): In a May “PGO Conversation”, Microsoft had this to say about PGO: “PGO improves application performance by adding new insights to the optimization process that depend on how the application is running, and not just program code.” Today, Lander said developers can use PGO to:
- Compile boot code with higher quality.
- Reduce bit size by compiling infrequently used code with lower quality (or none at all).
- Rearrange the application binaries so that the code used at startup is collocated near the beginning of the file.
The team has built the foundation that can enable optimal PGO experiences in .NET 6. “At this time, we have not allowed anyone else to use PGO to optimize applications. That’s what will happen next with .NET 7,” Lander said. . Learn more here.
- Dynamic PGO: This is about improving the way the just-in-time (JIT) compiler produces and consumes profile data, with a focus on “dynamic” scenarios where everything happens in-process. “Dynamic PGO is the mirror image of the static PGO system,” Lander said. “Where static PGO is integrated into crossgen2, dynamic PGO is integrated into RyuJIT. Where static PGO requires a separate training activity and uses special tools, dynamic PGO is automatic and uses the running application. execution to collect relevant data. While static PGO data is persisted, dynamic PGO data is lost after each execution of the application. Dynamic PGO is similar to a tracing JIT.” Learn more here.
- Crossgen2: Crossgen2 replaces crossgen: Crossgen2 has been enabled for all existing crossgen scenarios, and Microsoft has also removed (old) crossgen from the SDK, making it more accessible and unusable. “Crossgen (1 and 2) allows IL to be pre-compiled to native code as a release step. Pre-compilation is mainly beneficial for improving startup. Crossgen2 is a from-scratch implementation already be a superior platform for code generation innovation. For example, crossgen2 can generate code for a wider set of IL models than crossgen1.” Read more here.
Security mitigations: For this release, the team has added preview support for two key security measures that will be enabled by default in .NET 7:
- CET: Control-Flow Enforcement technology comes from Intel, introduced last year to protect against common malware threats. Available in some newer Intel and AMD processors, it adds capabilities to hardware that can protect against some common types of attacks involving control flow hijacking, Lander said. Learn more here.
- W^X: Wikipedia says it means “write xor run” and is pronounced W xor X. With its ability to block a basic attack path by disallowing memory pages from being writable and executable at the same time, Lander said he This was such an effective foundational mitigation that Microsoft avoided using more advanced mitigations because they could be circumvented by the lack of this capability. Instead, the company will add other complementary mitigations such as CET. Learn more here.
- HTTP/3: Still officially in the draft stage, this third version of the HTTP protocol is already well used, according to Wikipedia, running on the QUIC encrypted general-purpose transport protocol, which multiplexes multiple streams of data over a single connection. As an official project previewed in .NET 6, Lander said its use of QUIC solves existing functional and performance issues. “We’ve included HTTP/3 in .NET 6 so you can start experimenting with it,” Lander said. “This is a preview feature, and therefore not supported. There may be rough edges, and there needs to be wider testing with other servers and clients to ensure compatibility. ” Learn more here.
- SDK Workloads: This is a new schema for SDK workloads highlighted in .NET 6 Preview 5, allowing Microsoft to add support for new types of applications without increasing the size of the SDK. It replaces the old monolithic SDK approach, which was burdened by long build times and large distribution sizes. “In future releases, we plan to remove more components and make them optional, including ASP.NET and the Windows desktop,” Lander said. “At the end of the day, one can imagine that the SDK only contains MSBuild, NuGet, the language compilers and the workload acquisition functionality. We really want to cater to a large .NET ecosystem and provide only the software that you need to accomplish your particular job. You can see how this model would be much better for CI scenarios, allowing dotnet tools to acquire a bespoke set of components for the specific code being built. Read more here .
“.NET 6 has a lot of new features and capabilities that are for the here and now, most of which have been explored in all previews and also in upcoming .NET 6 articles,” Lander said in conclusion. “At the same time, it’s inspiring to see the new features in .NET 6 that will lay the groundwork for what’s to come. These are big-bet features that will push the platform forward in obvious and non-obvious ways.
“For early releases, the team needed to focus on establishing .NET Core as a functional and holistic open source and cross-platform development system. Then we focused on unifying the platform with Xamarin and Mono. You can see that we’re moving away from that style of project to more future-facing projects. It’s great to see the platform expand again in terms of runtime capabilities fundamentals, and there is much more to come in this direction.
David Ramel is an editor and writer for Converge360.