Microsoft a publié la plateforme ouverte .NET 9.0

La société Microsoft a présenté la sortie de la plateforme ouverte .NET 9, créée grâce à l'unification des produits .NET Framework, .NET Core et Mono. Sur la base de .NET 9, il est possible de créer des applications multiplateformes pour les navigateurs, les systèmes cloud, desktop, les appareils IoT et les plateformes mobiles, en utilisant des bibliothèques uniques et un processus de compilation commun, indépendamment du type d'application. Les assemblages .NET SDK 9, .NET Runtime 9 et ASP.NET Core Runtime 9 sont disponibles pour Linux, macOS et Windows. .NET Desktop Runtime 9 est uniquement fourni pour Windows. Les résultats associés au projet sont diffusés sous licence MIT.

.NET comprend un Runtime avec le compilateur JIT RyuJIT, des spécifications d'API, des bibliothèques WPF, Windows Forms, WinUI et Entity Framework, une interface en ligne de commande dotnet, ainsi que des outils pour le développement de microservices, de bibliothèques, d'applications serveur, graphiques et en console. Un stack séparé est fourni pour le développement d'applications web ASP.NET Core 9.0, la couche ORM Entity Framework Core 9.0 (des drivers sont disponibles, y compris pour SQLite et PostgreSQL), la bibliothèque WPF 9 (Windows Presentation Foundation), le framework Windows Forms 9 pour le développement d'interfaces GUI, la plateforme Aspire 9 pour la création d'applications Cloud Native, le framework MAUI 9 pour le développement d'interfaces utilisateur multiplateformes, ainsi que les versions des langages C# 13 et F# 9. Le support de .NET 9.0 et C# 13 est intégré dans l'éditeur de code gratuit Visual Studio Code.

Fonctionnalités de la nouvelle version :

  • Plus de mille modifications ont été apportées pour optimiser les performances et améliorer la qualité du code généré. Le ramasse-miettes a été modernisé, intégrant par défaut un mécanisme d'adaptation dynamique à la taille de l'application (le ramasse-miettes est lié non pas à la disponibilité des ressources système, mais à la quantité de mémoire requise par l'application). Le nouveau mode permet d'améliorer l'efficacité sur les systèmes à plusieurs cœurs processeurs, lorsque l'application utilise relativement peu de mémoire ou si les besoins en mémoire varient considérablement pendant son exécution.

    De nouvelles optimisations basées sur le profilage (PGO) ont été ajoutées au compilateur JIT, avec une amélioration du traitement des boucles, du déploiement en ligne et de la vérification des limites. L'utilisation des instructions vectorielles a été étendue dans le runtime .NET et le support des extensions Arm64 SVE et Intel AVX10 a été ajouté. Le code pour le traitement des exceptions a été accéléré de 50 %. Pour le code utilisant des opérations de conversion de types comme « (IFoo)myFoo » et « myFoo is IFoo », une augmentation de performance allant jusqu'à 70 % a été observée. Les performances de certaines méthodes dans le langage de requêtes intégré LINQ, comme Take et DefaultIfEmpty, ont été multipliées par 10 lors du traitement de tableaux et de collections vides.

    La performance et l'efficacité de la méthode System.Text.Json ont été considérablement améliorées. La méthode JsonProperty.WriteTo permet désormais une écriture directe de chaînes UTF8, évitant ainsi une allocation de mémoire inutile. Les opérations de redimensionnement de JsonObject ont été optimisées. Lors des tests TechEmpower, qui évaluent l'efficacité du code pour le traitement des requêtes JSON, une augmentation de performance de 15 % et une réduction de la consommation de mémoire de 93 % par rapport à .NET 8 ont été observées.

  • Une nouvelle modèle d'attributs a été proposé dans le runtime pour activer et réduire la fonctionnalité dans les bibliothèques.
  • Dans le langage C# 13, les capacités d'utilisation du modificateur « params » ont été étendues, permettant d'indiquer des collections en plus des tableaux. Lors de l'initialisation des tableaux, l'opérateur « ^ » peut être utilisé pour indiquer l'index à partir de la fin du tableau (par exemple, « buffer = { [^1] = 0, [^2] = 1,….} » écrira 0 dans le dernier élément et 1 dans l'avant-dernier). Les itérateurs et les méthodes async peuvent utiliser des expressions ref et unsafe. Une nouvelle séquence d'échappement « \e » a été ajoutée. La définition d'interfaces pour les types « ref struct » et l'utilisation de types « ref struct » comme arguments dans des fonctions généralisées sont désormais permises. Un nouveau type Lock a été proposé pour établir des verrous dans des applications multithread. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(«\e[1mItem: \e[0m», items)); }
  • Le langage F# 9 a introduit la prise en charge de types pouvant être nuls. Dans les unions, des propriétés « .Is* » générées automatiquement (par exemple, person.contact.IsEmail) ont été mises en œuvre, permettant de vérifier l'appartenance d'une valeur à un ensemble. La prise en charge des expressions calculées vides (« let xs = seq { } ») a été ajoutée. Dans les directives commençant par le symbole « # », il est désormais permis d'indiquer des valeurs non string (par exemple, on peut écrire #nowarn 0070 au lieu de #nowarn « 0070 »). Des fonctions pour sélectionner aléatoirement ou mélanger des éléments ont été ajoutées aux modules List, Array et Seq. Les listes (list et set) peuvent désormais effectuer des opérations sur des collections.
  • Les capacités de la pile .NET Aspire, qui fournit un ensemble de composants pour créer des applications déployées dans des environnements cloud, ont été étendues. De nouvelles fonctionnalités pour la gestion des ressources et du cycle de vie des applications ont été ajoutées. Les outils de collecte de télémétrie ont été renforcés.
  • Un nouvel ensemble d'abstractions C# pour le développement d'applications AI, l'utilisation de grands modèles linguistiques, l'accès à des magasins de vecteurs et l'interaction avec des services AI a été proposé. Un nouveau type « Tensor » et une collection de méthodes pour le calcul et la manipulation de données multidimensionnelles ont été présentés. Les ajouts pour l'AI sont diffusés sous forme de paquets System.Numerics.Tensors, Microsoft.Extensions.AI et Microsoft.Extensions.VectorData. Le framework ML.NET, destiné à l'intégration de modèles d'apprentissage automatique dans des applications, a été mis à jour. Une bibliothèque Microsoft.ML.Tokenizers a été ajoutée pour coder et décoder du texte en tokens.
  • Dans la pile pour le développement d'applications web ASP.NET Core, la prise en charge de la compilation anticipée a été étendue, les capacités de surveillance et de traçage ont été élargies, le temps de démarrage a été réduit et la consommation de mémoire diminuée, et le fonctionnement avec des fichiers statiques a été optimisé. Une nouvelle API pour l'authentification et l'autorisation a été ajoutée. Dans Blazor, la plateforme pour créer des applications web en C#, de nouveaux modèles pour des applications hybrides et web ont été implémentés.
  • Les capacités du framework MAUI pour le développement d'interfaces utilisateur multiplateformes ont été étendues. L'optimisation des performances a été réalisée. L'intégration avec des applications de bureau et mobiles a été renforcée. De nouveaux éléments d'interface, TitleBar et HybridWebView, ont été ajoutés.
  • Dans WPF (Windows Presentation Foundation), le support des thèmes est étendu et le support des couleurs d'accent est ajouté.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster