Microsoft a annoncé la sortie de la plateforme open source .NET 8, résultant de l'unification des produits .NET Framework, .NET Core et Mono. Avec .NET 8, il est possible de créer des applications multiplateformes pour les navigateurs, les systèmes cloud, les ordinateurs de bureau, les appareils IoT et les plateformes mobiles, en utilisant des bibliothèques communes et un processus de construction unique, indépendamment du type d'application. Les ensembles .NET SDK 8, .NET Runtime 8 et ASP.NET Core Runtime 8 sont disponibles pour Linux, macOS et Windows. .NET Desktop Runtime 8 est uniquement fourni pour Windows. Les travaux associés au projet sont diffusés sous la licence MIT. La branche .NET 8 est classée LTS et sera maintenue pendant trois ans jusqu'en novembre 2026.
La composition de .NET 8 comprend un Runtime avec le compilateur JIT RyuJIT, des spécifications d'API, des bibliothèques WPF, Windows Forms, WinUI, Entity Framework, une interface en ligne de commande dotnet, ainsi que des outils pour le développement de microservices, bibliothèques, applications serveur, graphiques et console. Un ensemble distinct a été publié pour le développement d'applications web, ASP.NET Core 8.0, couche ORM Entity Framework Core 8.0 (avec des pilotes disponibles, y compris pour SQLite et PostgreSQL), bibliothèque WPF 8 (Windows Presentation Foundation), cadre Windows Forms 8 pour le développement d'IU, plateforme Aspire 8 pour créer des applications Cloud Native, cadre MAUI 8 pour développer des interfaces utilisateur multiplateformes, ainsi que des versions des langages C# 12 et F# 8. Le support de .NET 8.0 et C# 12 est inclus dans l'éditeur de code libre Visual Studio Code.
Fonctionnalités de la nouvelle version :
- Une grande optimisation des performances a été réalisée. Un nouveau générateur de code, supportant l'optimisation dynamique basée sur le profilage de l'exécution du code (Dynamic Profile-Guided Optimization), est désormais activé par défaut. L'utilisation de ce nouveau générateur de code permet d'améliorer la performance des applications jusqu'à 20 %. De plus, la nouvelle version ajoute le support des instructions AVX-512, permettant d'augmenter les performances des opérations parallèles sur des données vectorielles. Un nouvel interface a été mis en place pour les types primitifs, permettant de traiter et de formater directement des données au format UTF-8 sans recodage. Dans les tests TechEmpower, les performances des API JSON ont augmenté de 18 %, tandis que pour Fortunes, l'augmentation est de 24 %.

- Ajout d'un nouveau stack .NET Aspire, destiné au développement d'applications cloud (cloud-native) en utilisant les technologies .NET. .NET Aspire offre un large éventail de composants nécessaires à la création d'applications fonctionnant dans des environnements cloud, y compris des outils pour la collecte de télémétrie, la configuration, les vérifications de fonctionnement et la garantie de résilience.
- Les outils de packaging des applications dans des conteneurs isolés ont été étendus. Par défaut, la publication des images de conteneurs est assurée sans Dockerfile et sans utilisateur root. La taille de l'image de base du conteneur avec les composants de la plateforme .NET a été réduite. Une version minimaliste de l'image pour l'exécution d'applications compilées en fichiers exécutables (Native AOT) a été ajoutée. Une version plus sécurisée des images basée sur Chiseled Ubuntu a été ajoutée.
- L'efficacité de la compilation en fichiers exécutables autonomes (Native AOT), où l'ensemble du projet est initialement compilé en code machine pour la plateforme cible sans utiliser de code intermédiaire et sans application de JIT, a été améliorée.

- Les capacités des interfaces de programmation utilisables dans les systèmes d'apprentissage automatique ont été étendues. Par exemple, dans la bibliothèque System.Numerics, la compatibilité avec les systèmes d'IA générative a été améliorée. Des exemples pour la conscience des chatbots, la génération de contenu et l'interaction avec les services Azure AI ont été ajoutés.
- Dans Blazor, la plateforme de création d'applications web en C#, le temps de chargement des pages a été réduit, l'évolutivité améliorée, et l'utilisation conjointe de Blazor Server et Blazor WebAssembly dans une seule application pour créer des programmes alliant les fonctionnalités côté client et serveur a été autorisée. de serveurs Ajout d'un Jiterpreter, un nouveau runtime WebAssembly plus rapide, permettant d'accélérer le rendu de l'interface de 20%. Les capacités d'authentification, d'autorisation et d'identification ont été étendues.
- Le framework MAUI pour le développement d'interfaces utilisateurs multiplateformes a été élargi, permettant d'utiliser une base de code unique pour construire des interfaces pour Windows, macOS, iOS et Android. Un support expérimental pour la compilation (Native AOT) a été ajouté. La prise en charge des plateformes Xcode 15 et Android API 34 a été ajoutée. Les éléments graphiques et les boutons ont été modernisés, et le traitement des clics de souris et des événements depuis le clavier a été amélioré.
- Dans le langage C# 12, un support pour une syntaxe simplifiée pour la création de constructeurs primaires dans toutes les classes et structures a été ajouté, ainsi que la création d'arrays, de spans et d'autres types de collections a été simplifiée. Des moyens ont été fournis pour définir des valeurs par défaut pour les paramètres des expressions lambda. Le traitement des arguments optionnels a été simplifié. La possibilité de créer des alias pour n'importe quel type à l'aide de la directive « alias » a été ajoutée. // Création d'une liste List a = [1, 2, 3, 4, 5, 6, 7, 8]; // Création de span-arrays Span b = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘h’, ‘i’]; // Utilisez l'opérateur spread pour concaténer int[] array1 = [1, 2, 3]; int[] array2 = [4, 5, 6]; int[] array3 = [7, 8, 9]; int[] fullArray = [..array1, ..array2, ..array3]; // le contenu sera [1, 2, 3, 4, 5, 6, 7, 8, 9]
- Dans ASP.NET Core, un support de l'authentification basée sur les cookies et les tokens a été réalisé pour les applications monopages (SPA, single-page application) et web (Blazor). Une nouvelle interface utilisateur pour l'authentification a été proposée. La protection contre les attaques XSRF/CSRF a été renforcée.
- Dans Entity Framework Core, de nouveaux types complexes qui peuvent être utilisés comme objets ont été fournis. Le support des données hiérarchiques dans SQL Server a été ajouté.
- Dans le gestionnaire de paquets NuGet, l'audit des paquets dans les projets a été simplifié et une notification sur la présence de vulnérabilités connues a été mise en place.
- Dans .NET Runtime, un mode de compilation anticipée (AOT) pour les plateformes WebAssembly (WASM) et Android a été ajouté.
- WPF a ajouté un dialogue d'ouverture de répertoire (OpenFolderDialog) et a intégré le support de l'accélération matérielle dans RDP.
- Le support de l'architecture ARM64 a été considérablement amélioré et la qualité du code pour ARM a été augmentée.
- Dans le débogueur, l'affichage des données de débogage récapitulatives a été assuré et des couches de débogage simplifiées pour les types .NET couramment utilisés ont été mises en oeuvre.
Source : opennet.ru


