Microsoft har præsenteret en betydelig opdatering af den åbne platform .NET 7, der er skabt gennem en enhed af produkterne .NET Framework, .NET Core og Mono. Med .NET 7 kan der skabes multi-platform applikationer til browseren, cloud-systemer, desktop, IoT-enheder og mobile platforme, ved at bruge ens biblioteker og en fælles bygningsproces, uafhængigt af applikationstypen. .NET SDK 7, .NET Runtime 7 og ASP.NET Core Runtime 7 er tilgængelige for Linux, macOS og Windows. .NET Desktop Runtime 6 leveres kun til Windows. Relateret arbejde til projektet er distribueret under MIT-licensen. Støtte til .NET 7 vil blive ydet i 18 måneder indtil 14. maj 2024.
.NET 7 inkluderer runtime CoreCLR med JIT-kompilatoren RyuJIT, standard biblioteker, CoreFX biblioteker, WPF, Windows Forms, WinUI, Entity Framework, kommandolinjeinterfacet dotnet samt værktøjer til udvikling af mikrotjenester, biblioteker, serverbaserede, grafiske og konsolapplikationer. Separat er der offentliggjort en stak til udvikling af webapplikationer ASP.NET Core 7.0, ORM-laget Entity Framework Core 7.0 (drivere er tilgængelige, herunder til SQLite og PostgreSQL), WPF 7 biblioteker (Windows Presentation Foundation), Windows Forms 7 ramme til GUI-udvikling, Orleans 7 platform til udvikling af Cloud Native applikationer, MAUI 7 ramme til udvikling af multi-platform brugergrænseflader samt udgivelser af sprog C# 11 og F# 7. Støtte til .NET 7.0 og C# 11 er inkluderet i den gratis kodeeditor Visual Studio Code.
Funktioner i den nye udgave:
- Der er gennemført en enhed af den grundlæggende klasserbibliotek (BCL, Base Class Library) til brug i forskellige applikationstyper, herunder programmer til desktopsystemer, webapplikationer, cloud-platforme, mobile applikationer, spil, indlejrede programmer og maskinlæringssystemer. Til udvikling af forskellige applikationstyper kan man bruge én fælles SDK, Runtime og sæt af biblioteker.
- Der er givet mulighed for at binde applikationen til API'et, der svarer til udgaven af .NET 7, ved at definere målplatformen 'net7.0', for eksempel 'net7.0'. For at binde til API'er, der er specifikke for bestemte platforme, kan platformstypen detaljeres, for eksempel ved at angive 'net7.0-android'.
- Støtten til ARM64-arkitekturen er væsentligt forbedret, og der er fortsat arbejde hen imod at opnå paritet i applikationsydelse for .NET ved udførelse på x86- og ARM64-arkitekturer. Effektiviteten af cache-brugen på tredje niveau er forbedret i runtime på ARM64-systemer. LSE-instruktioner er blevet anvendt til at adskille adgang til hukommelse fra parallelle tråde, hvilket har medført en reduktion i latenstid på 45%. Biblioteket har fået tilføjet håndteringsmuligheder, der bruger vektortyperne Vector64, Vector128 og Vector256, og funktionerne EncodeToUtf8 og DecodeFromUtf8 er blevet genopskrevet baseret på vektor-instruktioner, hvilket har givet en ydelsesforøgelse på op til 60% (for funktionerne NarrowUtf16ToAscii og GetIndexOfFirstNonAsciiChar når ydelsesgevinsten op på 35%). Samlet set er hastigheden for testgennemførelser på ARM64-platformen steget med 10-60%.

- Støtten til Linux-platformen er forbedret, herunder er der tilføjet pakker med .NET 6 i Ubuntu 22.04s officielle repositorier, samt en optimeret, kompakt og brugsklar docker-billede til hurtig implementering af containere med .NET-baserede applikationer.
- Støtte til 64-bit IBM Power-arkitektur (ppc64le) er blevet tilføjet.
- .NET Upgrade Assistant-værktøjet er blevet foreslået for at forenkle overgangen af gamle applikationer til .NET 6 eller .NET 7-brancher. Den nye version har udvidet støtten til migrering af applikationer fra ASP.NET til ASP.NET Core, tilføjet analysetools og kodekorrektorer til WinForms, WPF og klasselibrary, implementeret støtte til analysen af eksekverbare filer og tilføjet støtte til UWP (Universal Windows Platform).
- Mulighederne for at oprette applikationer til cloud-native systemer og PaaS-platforme (platform som tjeneste) er blevet udvidet. Der er blevet givet mulighed for at oprette applikationer pakket i isolerede containere ved hjælp af kommandoen "dotnet publish".
- Værktøjerne til overvågning af applikationsstatus og indsamling af målinger om deres ydeevne er blevet udvidet. Nye hændelser og metoder er blevet tilføjet til analysen af applikationens aktivitet og ydeevne.
- C# 11 introducerer støtte for ubehandlede strengliteter, som kan inkludere specielle tegn uden behov for at blive undsluppet (sådanne literater markeret med tre citationstegn). Generiske grænseflader til matematiske funktioner er blevet foreslået, og der er givet mulighed for at definere statiske elementer i virtuelle grænseflader, som har gjort det muligt at anvende metoder til generisk programmering til at udføre matematiske operationer uden præcise oplysninger om værdityperne.
- Mulighederne i standardbiblioteket er blevet udvidet. API System.Formats.Tar er tilføjet til arbejde med tar-arkiver. I funktioner, der arbejder med tid (TimeStamp, DateTime osv.), er der tilføjet støtte for mikrosekunder og nanosekunder. Der er implementeret mulighed for at styre serialisering og deserialisering af .NET-typer i System.Text.Json.
- Kommandoen 'dotnet new' har fået tilføjet støtte til autoudfyldelse af skabeloner til typiske projekter ved at trykke på Tab-tasten.
- .NET SDK har implementeret muligheden for at begrænse anvendelsen af de medfølgende projektskabeloner, for eksempel kan man definere, hvilke operativsystemer en skabelon er tilladt i.
- NuGet har tilføjet en centraliseret pakkeadministrationsfunktion, der gør det muligt at styre afhængigheder på tværs af flere projekter.
- Ydelsen af JIT-kompilatoren er forbedret. Der er tilføjet støtte for OSR (On Stack Replacement) mekanismen til at ændre kode for allerede udførte metoder, hvilket muliggør optimeringer af metoder, der tager lang tid at udføre, uden at vente på, at den aktuelle opkald afsluttes (i TechEmpower-testen bemærkes en stigning i ydeevnen på de første anmodninger på 10-30%).
- Effektiviteten af optimering baseret på profilering af kode (PGO - Profile-guided optimization) er forbedret, hvilket gør det muligt at tage hensyn til karakteristika, der defineres under programudførelsen.
- Support til kompilering til selvstændige eksekverbare filer (Native AOT) er tilføjet, hvor hele projektet oprindeligt er kompilere til maskinkode for den målrettede platform uden brug af mellemledskode og uden at anvende JIT.
Kilde: opennet.ru

