IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft annonce .NET 9 et apporte des améliorations radicales à l'ensemble de la pile .NET
Qu'il s'agisse des langages de programmation, des outils de développement ou des charges de travail

Le , par Anthony

310PARTAGES

4  0 
Microsoft annonce le lancement de .NET 9, la version la plus productive, moderne, sûre, intelligente et performante de .NET à ce jour. Cette version est le résultat d'une nouvelle année d'efforts de la part de milliers de développeurs du monde entier et comprend des milliers d'améliorations en termes de performances, de sécurité et de fonctionnalités. Des améliorations radicales sont notamment apportées à l'ensemble de la pile .NET, qu'il s'agisse des langages de programmation, des outils de développement ou des charges de travail, ce qui permet de créer une plateforme unifiée et d'intégrer facilement l'IA dans les applications.

Pour rappel, Microsoft a partagé sa vision initiale de .NET 9 et a publié le premier aperçu du framework au début de l'année 2024. Selon le communiqué, les domaines d'intérêt les plus importants concernaient le développement d'applications cloud-natives et intelligentes, mais des investissements importants en matière de performance, de productivité et de sécurité, ainsi que des avancées sur l'ensemble de la plateforme ont également été annoncés. Ce 12 novembre 2024, Microsoft présente officiellement les points forts de .NET 9 dans les langages de programmation, les charges de travail et les outils de développement.


Des performances inégalées - des applications plus rapides, et moins de mémoire

.NET 9 est la version la plus performante de .NET à ce jour, avec plus de 1 000 changements liés aux performances dans le temps d'exécution, les charges de travail et les langages, avec des algorithmes plus efficaces qui génèrent un meilleur code. Stephen Toub a effectué une analyse approfondie des améliorations de performances de .NET 9, qu'il faut absolument lire, mais examinons quelques points forts de cette version.

Le GC de serveur a été considérablement modifié pour s'adapter aux besoins en mémoire de l'application plutôt qu'aux ressources (mémoire et CPU) disponibles dans l'environnement (machine/VM/conteneur). Ce changement d'approche a un impact profond dans les environnements à nombre élevé de cœurs, où la mémoire de l'application est faible ou change considérablement au fil du temps. Jusqu'à présent, les implémentations GC des stations de travail et des serveurs fournissaient des résultats distincts et obligeaient les utilisateurs à faire des compromis entre les deux. Ce changement devrait être particulièrement intéressant pour tous ceux qui utilisent le GC sur station de travail pour contrôler l'utilisation de la mémoire des applications cloud. L'avantage de la mémoire s'accompagne d'un coût modeste en termes de débit, qui peut être observable ou non. Le GC de serveur peut être configuré pour utiliser l'ancienne implémentation, ce qui peut s'avérer utile pour les tests.

Le benchmark TechEmpower n'a rien à envier à .NET 9, avec un débit plus élevé et une baisse spectaculaire de l'utilisation de la mémoire. La baisse de la mémoire est due aux changements apportés au GC de serveur.


Le runtime est revenu à la vectorisation, en ajoutant le support pour les nouveaux siliciums, à la fois Arm64 SVE, Intel AVX10, et l'accélération matérielle du runtime. RyuJIT améliore les performances pour Arm64, les boucles, PGO, et les vérifications de limites. Les exceptions sont 50% plus rapides, grâce à l'adoption du même modèle d'exception que celui utilisé par Native AOT.

L'optimisation guidée par profil (PGO) dynamique a été mise à jour pour optimiser davantage de modèles de code. Le JIT génère désormais du code à trajectoire rapide pour les casts de type courants et inédits dans une application. Les casts, tels que (IFoo)myFoo et myFoo is IFoo sont très courants en C#. Il peut également dérouler et vectoriser certaines opérations sur les tampons pour les longueurs de tampons courantes qu'il observe. Cette modification permet d'accélérer l'exécution de 70 %, mais nécessite la désactivation de ReadyToRun.

LINQ a été optimisé pour une variété de cas courants. Des méthodes telles que Take et DefaultIfEmpty renvoient désormais des résultats jusqu'à 10 fois plus rapides lorsque le tableau, la collection ou l'énumérable sous-jacent est vide. Enumerable.SequenceEqual traite déjà les entrées de tableaux en déléguant l'opération à MemoryExtensions.SequenceEquals, ce qui permet une itération et une vectorisation efficaces en passant les tableaux en tant qu'étendues. Cette fonctionnalité est désormais disponible pour List<T>.

Les détails de bas niveau de System.Text.Json ont été considérablement optimisés, avec des améliorations de plus de 50 % pour diverses opérations. JsonProperty.WriteTo peut désormais écrire directement des octets UTF8 pour éviter l'allocation d'un string. La nouvelle API JsonMarshal.GetRawUtf8Value renvoie des octets UTF8, au lieu de JsonElement.GetRawText, qui renvoie une chaîne et nécessite un encodage et une allocation. JsonObject peut maintenant dimensionner correctement son historique sous-jacent si un nombre peut être récupéré à partir de l'énumérable qui lui est donné, évitant ainsi les coûts d'allocation et de redimensionnement.

En plus de ces améliorations fondamentales de .NET, vous trouverez des améliorations de performance pour tous les types d'applications.

.NET Aspire - Des éléments de base pour créer de meilleures applications

.NET Aspire est un ensemble d'outils, de modèles et de paquets puissants pour le développement transparent d'applications observables et prêtes pour la production. Six mois seulement se sont écoulés depuis la première version de .NET Aspire, et des améliorations ont déjà été apportées à toutes les parties de la pile, depuis les nouvelles fonctionnalités du tableau de bord de télémétrie et de métrologie jusqu'au déploiement plus rationalisé des applications dans le cloud. Il a été intéressant de voir l'adoption de .NET Aspire dans des applications de tous types et de voir la communauté adopter les intégrations et les outils pour leurs scénarios. En outre, Microsoft l'a très bien adopté : les équipes Xbox et Copilot ont intégré .NET Aspire à leurs services existants, resserrant ainsi leur boucle de développement interne grâce à des informations facilement accessibles et à diverses intégrations Azure compatibles.


La sortie de .NET Aspire 9 apporte certaines des fonctionnalités les plus demandées pour aider à rationaliser le développement des applications. Il est désormais possible de démarrer et d'arrêter des ressources à partir du tableau de bord, de maintenir les conteneurs en vie entre les sessions de débogage et d'accéder à de nouvelles API, notamment WaitFor, afin de mieux gérer le démarrage des ressources. Microsoft a travaillé en étroite collaboration avec la communauté pour lancer de nouvelles intégrations transparentes pour OpenAI, Ollama, Milvus et bien d'autres. L'acquisition de .NET Aspire a été simplifiée afin de faciliter son adoption dans les applications, les scénarios de déploiement ont été améliorés avec Azure Container Apps et la prise en charge d'Azure Functions avec .NET Aspire a été annoncée en avant-première.


Intelligence artificielle - Un écosystème d'IA en pleine croissance et prospère

Microsoft continue d'étendre les capacités .NET pour la création et l'intégration d'applications avec l'IA. Il y a de nouveaux matériels d'apprentissage et échantillons, des intégrations simplifiées dans l'écosystème, des collaborations avec des partenaires pour construire une communauté d'IA dynamique, et il est plus facile que jamais de déployer des solutions d'IA dans le cloud. Des entreprises de tout le secteur ont adopté .NET pour créer des expériences d'IA de premier plan pour leurs clients, notamment H&R Block, Blip et KPMG. .NET fait fonctionner l'assistant de codage GitHub Copilot et la toute nouvelle expérience Microsoft Copilot a été reconstruite à partir du groupe avec .NET.

Il est essentiel que les développeurs aient accès aux dernières avancées lorsqu'ils créent des services et des applications d'IA. C'est pourquoi Microsoft a travaillé avec des partenaires comme Azure, OpenAI, LlamaIndex, Qdrant, Pinecone, Milvus, AutoGen, OllamaSharp, ONNX Runtime, et bien d'autres dans tout l'écosystème de l'IA pour fournir un ensemble robuste d'offres aux développeurs .NET.


En outre, il est désormais plus facile d'intégrer des contrôles infusés par l'IA dans les applications .NET, grâce à la mise en place d'un écosystème de composants intelligents avec la communauté et les partenaires fournisseurs de contrôles de Microsoft.

Éléments de base de l'IA pour .NET

Un écosystème robuste signifie qu'il y a plus de choix que jamais pour les développeurs qui doivent décider ce qui convient parfaitement à leur scénario. Microsoft a cherché à rationaliser ces intégrations et à supprimer la barrière à l'entrée avec le nombre croissant d'API et de fonctionnalités dans l'écosystème. C'est pourquoi, en collaboration avec Semantic Kernel, elle a introduit un ensemble d'abstractions dans l'écosystème .NET sous Microsoft.Extensions.AI et Microsoft.Extensions.VectorData qui fournissent une couche unifiée d'abstractions C# pour interagir avec les services d'IA, tels que les modèles de langage de petite et grande taille (SLM et LLM), les embeddings, les entrepôts de vecteurs et les intergiciels. Cette nouvelle approche rationalisée donne déjà d'excellents résultats chez les premiers utilisateurs, notamment Pieces et OllamaSharp.


Tenseurs et tokenizers

Microsoft.Extensions.AI et VectorData ne sont qu'un sous-ensemble des blocs de construction que Microsoft propose dans .NET 9, car elle a également apporté d'importantes améliorations aux bibliothèques et aux types primitifs afin d'améliorer le développement de l'IA. Microsoft.ML.Tokenizers est un tokenizer amélioré pour les familles de modèles les plus populaires, notamment GPT (4,o1,etc), Llama, Phi et Bert, en plus d'une nouvelle prise en charge des algorithmes de tokenisation, notamment BPE au niveau de l'octet, SentencePiece et WordPiece.

Avec l'avènement des modèles de langage en tant que service, la barrière à l'entrée pour les développeurs utilisant l'IA a drastiquement diminué. Tensor<T> bénéficie également d'un coup de pouce pour le développement de l'IA avec un nouveau type pour représenter les données multidimensionnelles afin de simplifier l'interopérabilité entre les bibliothèques et l'application des opérations.

Améliorations de GitHub Copilot pour les développeurs .NET

GitHub Copilot permet d'améliorer la productivité en offrant de meilleurs résultats dans les expériences d'édition et en proposant une assistance AI dans les flux de travail réguliers pour les développeurs .NET. Cette expérience est encore meilleure avec les dernières versions de Visual Studio et...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !