Alongside .NET 5.0.10 and .NET Core 3.1.19, Microsoft has also released .NET 6 Release Candidate (RC) 1. Release Candidate is an early release version of .NET is publicly available for use but does not automatically update it unless installed manually. This release brings along new exciting features and updates that are anticipated in the actual release version of .NET 6.
The .NET team over at Microsoft indicates that another Release Candidate is anticipated before the launch of .NET 6 and this is the first one:
It is the first of two “go live” release candidate releases that are supported in production.Microsoft
This release is currently available to use on Linux, Windows, and macOS. Moreover, Microsoft claims that it has been tested with Visual Studio 2022 Preview 4, and is the future for .NET.
What’s new in .NET 6 Release Candidate 1
Microsoft has been working tirelessly to improve the user experience with .NET by enhancing the functional performance of new as well as existing functions, all while adding new functions to it.
Microsoft has built a Source Build infrastructure in .NET 6 RC 1 in collaboration with Red Hat specifically for Red Hat Enterprise Linux (RHEL) .NET users. They claim to have been working in collaboration since before the release of .NET Core 1.0, and now finally have something to share with the public.
The concept for Source Build is to allow users to create open-source distros with open-source tools. Microsoft has achieved this through what they call a “source tarball.” The tarball contains the entire source for an SDK. Using that tarball, Red Hat can build its own versions of SDKs.
Microsoft also hints towards reproducible builds once the Source Build is fully functional.
Profile-Guided Optimization (PGO)
Profile-Guided Optimization (PGO) is designed to optimize startup code to result in better quality by exploiting it. Although this feature has been used by .NET for some years, the new technology is easier to use with better results.
Microsoft has now compiled the PGO system from scratch to optimize it by integrating it with Crossgen2.
In Microsoft’s opinion, there are several things to consider to enable an effective and efficient PGO system, which are:
- Easy-to-use training tools that collect PGO data from applications, on the developer desktop and/or in production.
- Static PGO data can be used by a dynamic PGO system to establish initial insight.
- Straightforward integration of PGO data in the application and library build flow.
- Human- and source-control-friendly text format for PGO data.
- Tools that process PGO data in various ways (differencing and transforming).
Unlike the static PGO we have just discussed, the dynamic PGO can collect data from a running application as it is integrated with RyuJIT. However, it loses its data after each run of the application it is collecting the data from.
Dynamic PGO is very much similar to Tiered Compilation. In fact, Microsoft claims that it is just an advanced version of it.
Tiered compilation (TC) has similar characteristics to dynamic PGO. In fact, dynamic PGO can be thought of as tiered compilation v2. TC provides a lot of benefits, but is unsophisticated in multiple dimensions and can be greatly improved. It’s brains for a scarecrow.Microsoft
Crossgen 2, unlike Crossgen 1, is a standalone compiler. This allows the compiler to be cross-targeted. This means that it can target an x64 system from an ARM device, or Linux from Windows, etc.
Microsoft explains Crossgen2 with complete enthusiasm and a lot of promising features. To learn more about it, continue reading the details here.
Control-Flow Enforcement Technology (CET)
Some newer Intel and AMD processors now support CET. CET is a technology that protects the hardware against common types of attacks. .NET 6 RC 1 is now compatible with this technology.
W^X security mitigation prevents attacks by disallowing memory pages to be writable and executable at the same time. Since Apple had already made it mandatory for all future macOS to have W^X mitigation, Microsoft made sure that they implement this security capability to all operating systems, hence integrating it with .NET.
HTTP/3 is now integrated with .NET 6 RC 1, which is a better connection protocol than the previous versions. HTTP/3 uses another underlying protocol called QUIC. Since QUIC uses UDP and has TLS already built-in, it is more secure, faster, and more reliable.
This new capability in .NET 6 RC1 allows Microsoft to add new capabilities to existing .NET without having to grow the SDK in size significantly. They have not exactly yet measured how much in size this technology grows the existing SDKs, but they claim that it is very much less than what it could be if it were a separate SDK package.
To learn more about .NET Release Candidate 1, head on to Microsoft’s blog post.
Download .NET 6 Release Candidate 1
Use the direct download links below to download the .NET 6 Release Candidate 1 Runtime and SDKs according to your operating system and architecture:
More download and install options here.
Install .NET 6 Release Candidate 1
You can begin by downloading the right .NET version for you from the links above and then execute it to begin the installation process.
Once you have installed it, all your applications will run using the new build as the previous version will be replaced.
- Run the installation package by double-clicking it (in the case of macOS and Windows), and then clicking Install on the installation wizard.
- The installation will now begin. It does not take much time nor does it require a restart. Click Close once it has been installed successfully.
You have now installed the .NET. You may check which .NET version is running by typing in the following command in Command Prompt:
wmic product get description | findstr /C:.NET
.NET 6 Release Candidate 1 is still a work-in-progress, so it may not be completely stable. In spite of this, we recommend that you try it out as it introduces new features with a significant performance impact. This is a real treat for developers, particularly those working on the Redhat platform.
- Download .NET 6 Release Candidate 2 (Offline Installers)
- Download and Install .NET 5.0.10 and .NET Core 3.1.19 (Offline installers)
- Download and Install .NET 5.0.5 (Offline Installers)
- Download and Install .NET Framework 5.0.2 (Offline Installers)
- .NET 5.0.4 Offline installers + .NET Upgrade Assistant