Microsoft heeft de release aangekondigd van het open platform .NET 9, dat is ontwikkeld door de unificatie van de producten .NET Framework, .NET Core en Mono. Met .NET 9 kunnen cross-platform applicaties worden ontwikkeld voor browsers, cloudsystemen, desktops, IoT-apparaten en mobiele platforms, met gebruik van uniforme bibliotheken en een algemeen buildproces dat niet afhankelijk is van het type applicatie. De builds van .NET SDK 9, .NET Runtime 9 en ASP.NET Core Runtime 9 zijn beschikbaar voor Linux, macOS en Windows. .NET Desktop Runtime 9 is alleen beschikbaar voor Windows. De projectresultaten worden verspreid onder de MIT-licentie.
.NET omvat een Runtime met de JIT-compiler RyuJIT, API-specificaties, bibliotheken voor WPF, Windows Forms, WinUI en Entity Framework, de commandoregelinterface dotnet, evenals tools voor het ontwikkelen van microservices, bibliotheken, server-, grafische en console-applicaties. Apart beschikbaar is de stack voor de ontwikkeling van webapplicaties ASP.NET Core 9.0, de ORM-laag Entity Framework Core 9.0 (met drivers, waaronder voor SQLite en PostgreSQL), de WPF-bibliotheek 9 (Windows Presentation Foundation), het Windows Forms 9-framework voor GUI-ontwikkeling, het Aspire 9-platform voor het creëren van Cloud Native-applicaties, het MAUI 9-framework voor het ontwikkelen van cross-platform gebruikersinterfaces, evenals de releases van de talen C# 13 en F# 9. Ondersteuning voor .NET 9.0 en C# 13 is opgenomen in de gratis code-editor Visual Studio Code.
Kenmerken van de nieuwe release:
- Er zijn meer dan duizend wijzigingen doorgevoerd die gericht zijn op prestatieoptimalisatie en de verbetering van de kwaliteit van de gegenereerde code. De garbage collector is gemoderniseerd en maakt standaard gebruik van een mechanisme voor dynamische aanpassing aan de grootte van de applicatie (de garbage collector is niet gebonden aan de beschikbare systeembronnen, maar aan de hoeveelheid geheugen die de applicatie vereist). De nieuwe modus verhoogt de efficiëntie op systemen met een groot aantal processorcores, vooral als de applicatie relatief weinig geheugen gebruikt of als de geheugenvraag gedurende de uitvoering aanzienlijk fluctueert.
In de JIT-compiler zijn nieuwe optimalisaties op basis van profilering (PGO) toegevoegd, zijn de verwerking van lussen, inline-uitrol en grenscontrole verbeterd. In de .NET-runtime is het gebruik van vectorinstructies uitgebreid en is ondersteuning toegevoegd voor Arm64 SVE- en Intel AVX10-extensies. De verwerking van uitzonderingen is met 50% versneld. Voor code die typecasts uitvoert, zoals «(IFoo)myFoo» en «myFoo is IFoo», is een prestatieverbetering van tot 70% vastgesteld. De prestaties van bepaalde methoden in de Language-Integrated Query (LINQ), zoals Take en DefaultIfEmpty, zijn tot 10 keer verbeterd bij het werken met lege arrays en collecties.
De prestaties en efficiëntie van de System.Text.Json-methode zijn aanzienlijk verbeterd. In de JsonProperty.WriteTo-methode is de mogelijkheid voor directe schrijfbewerking van UTF8-strings geïmplementeerd, wat onnodige geheugentoewijzing uitsluit. De resize-operaties van JsonObject zijn geoptimaliseerd. Bij het uitvoeren van TechEmpower-tests, die de efficiëntie van code voor het verwerken van JSON-verzoeken evalueren, is een prestatieverbetering van 15% en een geheugenbesparing van 93% in vergelijking met .NET 8 waargenomen.
- In de Runtime is een nieuw attribuutmodel voorgesteld voor het activeren en afsnijden van functionaliteit in bibliotheken.
- In C# 13 zijn de mogelijkheden voor het gebruik van de modifier «params» uitgebreid, waarbij naast arrays ook collecties zijn toegestaan. Bij het initialiseren van arrays is het toegestaan om de operator «^» te gebruiken voor de telling van de index vanaf het einde van de array (bijvoorbeeld «buffer = { [^1] = 0, [^2] = 1,….}» schrijft 0 in het laatste element en 1 in het op één na laatste). In iterators en async-methoden is het gebruik van ref-expressies en unsafe toegestaan. Een nieuwe escape-sequentie «\e» is toegevoegd. Het is mogelijk om interfaces te definiëren voor «ref struct»-types en deze te gebruiken als argumenten in generieke functies. Een nieuw type Lock is voorgesteld voor het instellen van locks in multithreaded applicaties. Lock myLock = new(); void Concat(params List items) { lock (myLock) Console.WriteLine(string.Join(«\e[1mItem: \e[0m», items)); }
- In F# 9 is ondersteuning voor types toegevoegd die null-waarden kunnen bevatten. In de unions zijn automatisch gegenereerde eigenschappen '.Is*' geïmplementeerd (bijvoorbeeld person.contact.IsEmail), die kunnen worden gebruikt om te controleren of een waarde tot een verzameling behoort. Er is ondersteuning toegevoegd voor lege berekende expressies ('let xs = seq { }'). In directieven die beginnen met het symbool '#', is het toegestaan om niet-string waarden op te geven (bijvoorbeeld, je kunt #nowarn 0070 schrijven in plaats van #nowarn "0070"). Er zijn functies toegevoegd aan de modules List, Array en Seq voor het willekeurig kiezen of schudden van elementen. Voor lijsten (list en set) zijn collectie-operaties toegestaan.
- De mogelijkheden van de .NET Aspire-stack zijn uitgebreid, die een set componenten biedt voor het bouwen van toepassingen die in cloudomgevingen draaien. Er zijn nieuwe mogelijkheden toegevoegd voor resourcebeheer en de levenscyclus van toepassingen. De hulpmiddelen voor het verzamelen van telemetrie zijn uitgebreid.
- Een nieuwe set abstracties voor C# is voorgesteld voor de ontwikkeling van AI-toepassingen, het gebruik van grote taalmodellen, toegang tot vectoropslag en interactie met AI-services. Een nieuw type 'Tensor' is geïntroduceerd, evenals een verzameling methoden voor berekeningen en manipulatie van multidimensionale data. De toevoegingen voor AI worden verspreid in de vorm van pakketten System.Numerics.Tensors, Microsoft.Extensions.AI en Microsoft.Extensions.VectorData. Het ML.NET-framework is bijgewerkt, dat is ontworpen voor de integratie van machine learning-modellen in toepassingen. De Microsoft.ML.Tokenizers-bibliotheek is toegevoegd voor het coderen en decoderen van tekst in tokens.
- In de ASP.NET Core-stack voor de ontwikkeling van webtoepassingen is de ondersteuning voor vooruitlopende compilatie (ahead-of-time) uitgebreid, evenals de mogelijkheden voor monitoring en tracing, waardoor de opstarttijd is verkort en het geheugenverbruik is verminderd, en de werking met statische bestanden is geoptimaliseerd. Er is een nieuwe API voor authenticatie en autorisatie toegevoegd. In Blazor, het platform voor het bouwen van webtoepassingen in C#, zijn nieuwe sjablonen geïmplementeerd voor hybride en webtoepassingen.
- De mogelijkheden van het MAUI-framework voor de ontwikkeling van multi-platform gebruikersinterfaces zijn uitgebreid. De prestaties zijn geoptimaliseerd. De integratie met desktop- en mobiele toepassingen is versterkt. Nieuwe interface-elementen TitleBar en HybridWebView zijn toegevoegd.
- In WPF (Windows Presentation Foundation) is de ondersteuning voor thema's uitgebreid en is ondersteuning voor accentkleuren toegevoegd.
Bron: opennet.ru
