Microsoft heeft een belangrijke release van het open platform .NET 7 aangekondigd, dat is ontstaan door de unificatie van de .NET Framework, .NET Core en Mono producten. Met .NET 7 kunnen cross-platform applicaties worden ontwikkeld voor browser, cloudsystemen, desktop, IoT-apparaten en mobiele platforms, met gebruik van dezelfde bibliotheken en een gezamenlijk bouwproces, onafhankelijk van het type applicatie. De .NET SDK 7, .NET Runtime 7 en ASP.NET Core Runtime 7 zijn beschikbaar voor Linux, macOS en Windows. .NET Desktop Runtime 6 is alleen beschikbaar voor Windows. De projectgerelateerde resultaten worden verspreid onder de MIT-licentie. De ondersteuning voor de .NET 7 tak zal plaatsvinden gedurende 18 maanden tot 14 mei 2024.
.NET 7 bevat de CoreCLR-runtime met de JIT-compiler RyuJIT, standaardbibliotheken, CoreFX-bibliotheken, WPF, Windows Forms, WinUI, Entity Framework, de commandoregelinterface dotnet, evenals tools voor het ontwikkelen van microservices, bibliotheken, server-, grafische en consoleapplicaties. De ontwikkelstack voor webapplicaties ASP.NET Core 7.0 is afzonderlijk gepubliceerd, met de ORM-laag Entity Framework Core 7.0 (met drivers, onder andere, voor SQLite en PostgreSQL), de WPF 7 (Windows Presentation Foundation) bibliotheek, het Windows Forms 7 framework voor GUI-ontwikkeling, het Orleans 7 platform voor Cloud Native applicaties, het MAUI 7 framework voor het ontwikkelen van cross-platform gebruikersinterfaces, en releases van de talen C# 11 en F# 7. Ondersteuning voor .NET 7.0 en C# 11 is opgenomen in de gratis code-editor Visual Studio Code.
Kenmerken van de nieuwe release:
- De basisbibliotheek van klassen (BCL, Base Class Library) is geünificeerd voor gebruik in verschillende soorten applicaties, waaronder desktopprogramma's, webapplicaties, cloudplatforms, mobiele applicaties, games, embedded software en systemen voor machine learning. Voor de ontwikkeling van verschillende types applicaties kan één gezamenlijke SDK, Runtime en set bibliotheken worden gebruikt.
- Het is nu mogelijk om een applicatie te koppelen aan de API die overeenkomt met de release van .NET 7, door de doelspecifieke platformdefinitie 'net7.0' op te nemen, bijvoorbeeld 'net7.0'. Voor de koppeling aan platform-specifieke API's kan de platformtype verder worden gedetailleerd, bijvoorbeeld door 'net7.0-android' op te geven.
- De ondersteuning voor de ARM64-architectuur is aanzienlijk verbeterd en er is voortgang geboekt richting pariteit in de prestaties van .NET-applicaties die draaien op x86- en ARM64-architecturen. De efficiëntie van het gebruik van de derde cache-niveau op ARM64-systemen is verhoogd in de runtime. LSE-instructies zijn ingezet voor het afschermen van geheugen toegang vanuit parallelle threads, wat heeft geleid tot een vermindering van de latentie met 45%. In de bibliotheek zijn handlers toegevoegd die gebruikmaken van vector-typen Vector64, Vector128 en Vector256, en daarnaast zijn de functies EncodeToUtf8 en DecodeFromUtf8 herschreven op basis van vector-instructies, wat resulteerde in een prestatiewinst tot 60% (voor de functies NarrowUtf16ToAscii en GetIndexOfFirstNonAsciiChar is de prestatiewinst tot 35% gestegen). Over het geheel genomen is de snelheid waarmee tests op het ARM64-platform worden doorlopen, met 10-60% toegenomen.

- De ondersteuning voor het Linux-platform is verbeterd, met name zijn er pakketten met .NET 6 toegevoegd aan de standaardrepositories van Ubuntu 22.04 en is er een geoptimaliseerd, compact en gebruiksklaar docker-image beschikbaar gesteld voor snelle implementatie van containers met .NET-gebaseerde applicaties.
- De ondersteuning voor de 64-bit IBM Power (ppc64le) architectuur is toegevoegd.
- De .NET Upgrade Assistant-tool is geïntroduceerd om de migratie van oudere applicaties naar .NET 6 of .NET 7 vergemakkelijken. In de nieuwe versie is de ondersteuning voor de migratie van applicaties van ASP.NET naar ASP.NET Core uitgebreid, en zijn er analyzers en code-fixers toegevoegd voor WinForms, WPF en class libraries, met ondersteuning voor de analyse van uitvoerbare bestanden en UWP (Universal Windows Platform).
- De mogelijkheden voor het ontwikkelen van cloud-native applicaties en PaaS (Platform as a Service) zijn uitgebreid. Het is nu mogelijk om applicaties, verpakt in geïsoleerde containers, te ontwikkelen met behulp van het commando "dotnet publish".
- De middelen voor het volgen van de status van applicaties en het verzamelen van metrics over hun werking zijn uitgebreid. Er zijn nieuwe evenementen en methoden toegevoegd voor het analyseren van activiteit en prestaties van de applicatie.
- De C# 11-taal heeft ondersteuning toegevoegd voor ongeëchodeerde stringliteralen, die speciale tekens kunnen bevatten zonder dat ze geëchodeerd hoeven te worden (deze literalen worden aangeduid met drie aanhalingstekens). Algemene interfaces (generics) voor wiskundige functies zijn voorgesteld en er is een mogelijkheid geïntroduceerd om statische elementen in virtuele interfaces te definiëren, waardoor methoden van generiek programmeren kunnen worden toegepast voor het uitvoeren van wiskundige bewerkingen zonder exacte informatie over de types van waarden.
- De mogelijkheden van de standaardbibliotheek zijn uitgebreid. De API System.Formats.Tar is toegevoegd voor het werken met archieven in het Tar-formaat. In de tijdfuncties (TimeStamp, DateTime, enz.) is ondersteuning voor microseconden en nanoseconden toegevoegd. In System.Text.Json is de mogelijkheid geïmplementeerd om de serialisatie en deserialisatie van .NET-typen te beheren.
- In de opdrachtregelinterface 'dotnet new' is ondersteuning voor het automatisch aanvullen van sjablonen van typische projecten toegevoegd door op de Tab-toets te drukken.
- In de .NET SDK is de mogelijkheid geïmplementeerd om het gebruik van geleverde projecttemplates te beperken, bijvoorbeeld om te definiëren op welke besturingssystemen een sjabloon is toegestaan.
- In NuGet is een centrale pakketbeheer-modus toegevoegd, waarmee afhankelijkheden voor meerdere projecten tegelijkertijd kunnen worden beheerd.
- De prestaties van de JIT-compiler zijn verbeterd. Ondersteuning voor het OSR-mechanisme (On Stack Replacement) is toegevoegd voor het wijzigen van de code van al uitgevoerde methoden, waardoor optimalisaties in methoden die veel tijd kosten kunnen worden aangebracht zonder te wachten op de voltooiing van de huidige oproep (in de TechEmpower-test wordt een prestatieverbetering van 10-30% voor de verwerking van de eerste verzoeken opgemerkt).
- De effectiviteit van optimalisatie op basis van profileringsresultaten (PGO - Profile-guided optimization) is verhoogd, waardoor rekening kan worden gehouden met kenmerken die tijdens de uitvoering van het programma worden bepaald.
- Ondersteuning voor compilatie in zelfvoorzienende uitvoerbare bestanden (Native AOT) is toegevoegd, waarin het hele project aanvankelijk is gecompileerd in machinecode voor het doelsysteem zonder gebruik te maken van tussentijdse code en zonder JIT-toepassing.
Bron: opennet.ru

