Microsoft has released a significant update to the open-source .NET 7 platform, created through the unification of the .NET Framework, .NET Core, and Mono products. With .NET 7, developers can create cross-platform applications for web browsers, cloud systems, desktops, IoT devices, and mobile platforms, using common libraries and a unified build process that is independent of the application type. The .NET SDK 7, .NET Runtime 7, and ASP.NET Core Runtime 7 builds are available for Linux, macOS, and Windows. The .NET Desktop Runtime 6 is available only for Windows. Project-related developments are distributed under the MIT license. The .NET 7 branch will be supported for 18 months until May 14, 2024.
.NET 7 includes the CoreCLR runtime with the RyuJIT JIT compiler, standard libraries, CoreFX libraries, WPF, Windows Forms, WinUI, Entity Framework, the dotnet command-line interface, and tools for developing microservices, libraries, server, graphical, and console applications. The ASP.NET Core 7.0 web application development stack, Entity Framework Core 7.0 ORM layer (with drivers available for SQLite and PostgreSQL), WPF 7 library (Windows Presentation Foundation), Windows Forms 7 framework for GUI development, Orleans 7 platform for building Cloud Native applications, MAUI 7 framework for developing cross-platform user interfaces, as well as releases of C# 11 and F# 7 languages are published separately. .NET 7.0 and C# 11 support is included in the free code editor Visual Studio Code.
Features of the new release:
- The basic class library (BCL, Base Class Library) has been unified for use across various types of applications, including desktop applications, web applications, cloud platforms, mobile applications, games, embedded software, and machine learning systems. A single common SDK, Runtime, and set of libraries can be used for developing different types of applications.
- The ability to bind an application to the API corresponding to .NET 7 is provided by specifying the target platform as 'net7.0', for example, 'net7.0'. To bind to platform-specific APIs, the platform type can be detailed when specifying the target, such as 'net7.0-android'.
- Significantly improved support for ARM64 architecture and continued efforts to achieve parity in .NET application performance on x86 and ARM64 architectures. Runtime efficiency has increased in utilizing Level 3 cache on ARM64 systems. LSE instructions have been leveraged for memory access control from parallel threads, leading to a 45% reduction in latency. The library now includes handlers that utilize vector types Vector64, Vector128, and Vector256, and functions EncodeToUtf8 and DecodeFromUtf8 have been rewritten based on vector instructions, resulting in up to a 60% performance increase (for the NarrowUtf16ToAscii and GetIndexOfFirstNonAsciiChar functions, the performance boost reaches 35%). Overall, test pass speed on the ARM64 platform has increased by 10-60%.

- Improved support for the Linux platform, including the addition of .NET 6 packages in the official repositories of Ubuntu 22.04 and the provision of an optimized, compact, and ready-to-use Docker image for quickly deploying .NET-based application containers.
- Added support for IBM Power 64-bit architecture (ppc64le).
- Introduced the .NET Upgrade Assistant toolkit to simplify the migration of legacy applications to .NET 6 or .NET 7 branches. The new version has expanded support for migrating applications from ASP.NET to ASP.NET Core, added analyzers and code fixers for WinForms, WPF, and class libraries, implemented support for executable file analysis, and added support for the UWP (Universal Windows Platform).
- Enhanced capabilities for creating cloud-native applications and PaaS (Platform as a Service) solutions. Enabled the creation of applications packaged in isolated containers using the 'dotnet publish' command.
- Expanded tools for monitoring application status and collecting metrics about their performance. New events and methods have been added for analyzing application activity and performance.
- C# 11 introduces support for raw string literals, which can include special characters without needing to escape them (these literals are defined with three quotes). Generic interfaces for mathematical functions have been proposed, and the ability to define static elements in virtual interfaces has been added, allowing the application of generic programming methods to perform mathematical operations without exact type information.
- The capabilities of the standard library have been expanded. The System.Formats.Tar API has been added for working with Tar format archives. Support for microseconds and nanoseconds has been added to time handling functions (TimeStamp, DateTime, etc.). The System.Text.Json namespace now implements the ability to control serialization and deserialization of .NET types.
- The command-line interface 'dotnet new' now supports template auto-completion for common project templates by pressing the Tab key.
- .NET SDK offers the ability to limit the application of provided project templates; for example, you can specify which operating systems a template is allowed to run on.
- NuGet has introduced a centralized package management mode that allows managing dependencies for multiple projects at once.
- The performance of the JIT compiler has been improved. Support for the OSR (On Stack Replacement) mechanism has been added, allowing the modification of the code of already executing methods, enabling optimizations for time-consuming methods without waiting for the completion of the current call (TechEmpower tests show an improvement in processing time for initial requests by 10-30%).
- The efficiency of profile-guided optimization (PGO) has been enhanced, taking into account characteristics identified during program execution.
- Support for compiling into self-contained executable files (Native AOT) has been added, where the entire project is initially compiled to the machine code of the target platform without using intermediate code and without applying JIT.
Source: opennet.ru

