Plusieurs améliorations au programme de .NET 10

La 10e et dernière mise à jour majeure de la plateforme de développement logiciel .NET de Microsoft améliore la conception d’agents IA, le chiffrement, les performances du runtime ainsi que les langages C# et F#.

Après de longs mois de gestation, la version 10 de .NET a été lancée ce 11 novembre. Selon Microsoft, la dernière itération de son environnement de développement est la plus performante à ce jour, avec des améliorations pour l’IA, des API supplémentaires de chiffrement, le runtime et du langage C#14 avec des propriétés basées sur des champs. Concernant l’IA, elle inclut Agent Framework, un environnement pour rendre le développement d’agents IA aussi simple que la création d’une API web avec des bibliothèques .NET dédiées. « Agent Framework rassemble et développe les idées issues des projets Semantic Kernel et AutoGen, en combinant leurs points forts tout en ajoutant de nouvelles fonctionnalités », explique le fournisseur. Plusieurs modèles de flux sont pris en charge, notamment l’orchestration séquentielle, simultanée, de transfert et de chat de groupe. Les agents peuvent être alimentés par des outils via des définitions de fonctions ou des intégrations de serveurs MCP (Model Context Protocol), par exemple. Les agents peuvent être déployés à l’aide de modèles d’hébergement .NET habituels avec injection de dépendances intégrée, support des middleware et observabilité prête pour la production. « .NET 10 offre une prise en charge de premier ordre pour MCP, ce qui facilite l’extension des agents avec des outils et des services externes », a indiqué la firme de Redmond.

Cet environnement introduit par ailleurs des API évoluées dans les domaines du chiffrement, de la sérialisation, des collections et des diagnostics. De plus, avec l’avènement imminent de l’informatique quantique, .NET 10 étend la prise en charge de la cryptographie post-quantique avec le support de Windows Cryptography API: Next Generation (CNG), le support ML-DSA amélioré avec des API simplifiées et la prise en charge de HashML-DSA, ainsi que de Composite ML-DSA pour les approches hybrides. Parmi les autres ajouts on peut citer AES KeyWrap avec la prise en charge du remplissage pour les scénarios d’encapsulation sécurisée des clés. « Le runtime .NET 10 bénéficie « d’améliorations significatives » dans l’inlining JIT, la dévirtualisation des méthodes et les allocations de pile », selon le fournisseur. Cela inclut la prise en charge d’Advanced Vector Extensions 10.2 pour les puces Intel de pointe, des améliorations NativeAOT pour des applications compilées de manière anticipée (ahead-of-time, AoT) plus petites et plus rapides, une génération de code améliorée pour les structures passées en arguments et une inversion de boucle améliorée pour une meilleure optimisation.

Nombreuses améliorations pour C# 14 et F# 10

Les langages C# et F# de Microsoft retiennent l’attention dans la version .NET 10. C# 14 introduit des propriétés basées sur des champs afin de faciliter le passage des propriétés implémentées automatiquement aux accesseurs personnalisés. De plus, nameof pour les types génériques non liés permet aux développeurs d’utiliser nameof(List<>) sans avoir besoin d’un argument de type. Les modificateurs de paramètres dans les lambdas donnent la possibilité d’utiliser ref, in ou out sans avoir à spécifier explicitement les types de paramètres. Les constructeurs d’instances partielles et les événements complètent les méthodes et propriétés partielles de C# 13. Les blocs d’extension ajoutent la prise en charge des méthodes d’extension statiques et des propriétés d’extension statiques et d’instance, tandis que l’affectation conditionnelle null à l’aide de l’opérateur ?.= offre un code null-safe plus propre. 

F# 10 apporte des améliorations au langage, à la bibliothèque et aux outils afin de rendre les programmes plus sûrs, plus résilients et plus performants. Les types de référence nullables apportent une sécurité de type aux interactions avec les bibliothèques C#, tandis que les plages intégrales optimisées accélèrent les boucles for et autres compréhensions. Les contrôles d’égalité (equality checks) optimisés évitent le boxing et augmentent les performances de nombreuses opérations courantes. Les unions discriminées obtiennent des propriétés .Is* générées automatiquement pour un test rapide des cas. « La bibliothèque standard comprend désormais des fonctions aléatoires pour les collections utiles pour la science des données et le développement de jeux », a déclaré Microsoft. La productivité des développeurs est stimulée par l’amélioration des diagnostics, la récupération de parsing et diverses améliorations des outils.

Autres fonctions et évolutions

– NET MAUI (interface utilisateur d’application multiplateforme) 10 propose un nouveau modèle de projet qui s’intègre aux paramètres par défaut du service Aspire. Ce modèle fournit des méthodes d’extension qui connectent la télémétrie et la découverte de services à une application, permet la configuration des métriques et du traçage OpenTelemetry, et configure HttpClient pour qu’il fonctionne avec la découverte de services ;

– .NET MAUI 10 apporte également des améliorations aux contrôles de base, comme l’interception des requêtes web pour BlazorWebView et HybridWebView, afin de modifier les en-têtes, de rediriger les requêtes ou de fournir des réponses locales ;

– .NET 10 propose des mises à jour liées au presse-papiers pour Windows Forms, notamment un accès amélioré au presse-papiers et une meilleure gestion des formats de données du presse-papiers ;

– ASP .NET Core 10 introduit plusieurs fonctionnalités et améliorations, notamment des améliorations de Blazor, des améliorations d’OpenAPI et des mises à jour minimales de l’API qui facilitent la création.

Avant la sortie de la version finale de .NET 10, Microsoft a livré deux versions candidates et sept versions préliminaires. .NET 10 est une version à support à long terme (LTS) qui sera prise en charge pendant trois ans, jusqu’au 10 novembre 2028. Cette plateforme de développement est téléchargeable à cette adresse.

chevron_left
chevron_right