En avance de phase, les développeurs ont pu appréhender les évolutions de la prochaine version de .NET. La dixième itération de la plateforme de développement sera disponible en version de production au mois de novembre prochain. Selon Microsoft, .NET 10 introduit la version 14 de C# et apporte des améliorations majeures au runtime .NET, au SDK, aux bibliothèques, à ASP.NET Core, à Blazor et à .NET MAUI.

C# 14 introduit dans le langage un support de première classe pour System.Span et System.ReadOnlySpan, impliquant de nouvelles conversions implicites qui rendent la programmation plus naturelle avec ces types. Cette prise en charge améliore les performances sans risque pour la sécurité. C# 14 introduit aussi nameof comme type générique non lié. C# 14 permet également aux développeurs d'ajouter des modificateurs de paramètres tels que scoped, ref, in ou out , ou ref readonly aux paramètres des expressions lambda sans spécifier le type de paramètre.

Le runtime et les bibliothèques s’améliorent

Pour le moteur d'exécution .NET 10, la réduction de la charge d'abstraction des fonctionnalités populaires du langage est un domaine d'intérêt essentiel pour .NET 10. Pour atteindre cet objectif, Microsoft a étendu la capacité du compilateur JIT (Just In Time) à dé-virtualiser les appels de méthode pour couvrir les méthodes d'interface de tableau. Par ailleurs, au cours de l'exécution, le compilateur JIT allouera de petits tableaux de taille fixe en pile de types de valeurs qui ne contiennent pas de pointeurs de ramasse-miettes lorsqu'il peut garantir que l'objet ne survivra pas à sa méthode parente.

Pour les bibliothèques .NET 10, cette version introduit des API qui fonctionnent avec des étendues de caractères, ce qui élargit la normalisation au-delà des types de chaînes et évite les allocations inutiles. Des API proposant de créer des matrices d’état Handedness left ont été ajoutées pour les matrices billboard et les matrices billboard contraintes, et des améliorations ont été apportées à ZipArchive afin d’accroître les performances et l'utilisation de la mémoire.

Les autres évolutions

La première preview de .NET 10 intègre par ailleurs d’autres fonctionnalités et améliorations. Ainsi, le langage F# offre une meilleure gestion des structures génériques non gérées et ajoute un cache de conversions de types, activé uniquement lors des exécutions du compilateur.Pour le SDK .NET 10, une fonction d'audit NuGet permet désormais d'élaguer les références de paquets fournis par le framework et non utilisés par le projet. De son côté, Visual Basic ajoute la prise en charge des contraintes non gérées. Le compilateur Visual Basic respecte à présent l'attribut OverloadResolutionPriorityAttribute utilisé pour résoudre les ambiguïtés entre les surcharges de méthodes. Cela signifie que les nouvelles surcharges basées sur Span, plus rapides, sont dorénavant privilégiées par le compilateur.

ASP.NET Core ajoute la prise en charge de la génération de documents OpenAPI 3.1. « OpenAPI 3.1 est une mise à jour importante de la spécification OpenAPI, avec une prise en charge complète de JSON Schema draft 2020-12 », fait remarquer Microsoft. Les documents OpenAPI peuvent également être générés au format YAML. L'attribut RouteAttribute de Blazor supporte maintenant la mise en évidence de la syntaxe de la route pour mieux visualiser la structure du modèle de route. Pour Entity Framework, .NET 10 ajoute le support de LINQ de première classe pour la méthode LeftJoin, ce qui simplifie l'écriture de ces requêtes, selon Microsoft. Enfin, .NET MAUI est livré sous la forme d'une charge de travail .NET et de plusieurs paquets NuGet, « de sorte que les développeurs peuvent associer facilement des projets à des versions spécifiques et prévisualiser facilement des versions inédites ou expérimentales », a expliqué Microsoft.

Dévoilé le 25 février, .NET 10 arrive après .NET 9, sorti en novembre dernier. La Preview 1 est téléchargeable sur dotnet.microsoft.com.