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 publie .NET 8 Preview 5, le cinquième aperçu de la nouvelle version du framework,
Et présente toutes les nouvelles fonctionnalités et améliorations dans cette version

Le , par Anthony

23PARTAGES

5  0 
Microsoft est heureux de partager toutes les nouvelles fonctionnalités et améliorations de .NET 8 Preview 5 ! Cette version fait suite à la version Preview 4. Vous continuerez à voir beaucoup plus de fonctionnalités apparaître avec ces versions mensuelles. Les utilisateurs de .NET 6 et 7 voudront suivre cette version de près, car il s'agit d'un chemin de mise à niveau directe.

Vous pouvez télécharger .NET 8 Preview 5 pour Linux, macOS et Windows.


Découvrez les nouveautés d'ASP.NET Core dans la version Preview 5. Tenez-vous au courant des nouveautés et des évolutions dans What's New in .NET 8. Il sera mis à jour tout au long de la publication.

La Microsoft Build 2023 a été un énorme succès, en grande partie grâce à des développeurs .NET comme vous ! L'équipe .NET a enregistré une forte participation à nos sessions, au cours desquelles nous avons parlé de certaines des fonctionnalités les plus intéressantes de .NET 8 et répondu aux questions des participants.

Jetons maintenant un coup d'œil à quelques nouvelles fonctionnalités de .NET 8.


SDK : Améliorations des API métriques

L'aperçu 5 apporte un certain nombre d'améliorations et de mises à jour aux API métriques qui couvrent des cas d'utilisation supplémentaires.

API métriques compatibles avec l'injection de dépendance (DI)

L'équipe est ravie d'introduire l'interface IMeterFactory, qui peut être enregistrée dans des conteneurs DI et utilisée pour créer des objets Meter de manière isolée.

Code : Sélectionner tout
1
2
3
            // service is the DI IServiceCollection 
            // Register the IMeterFactory to the DI container using the default meter factory implementation. 
            services.AddMetrics();

Les consommateurs peuvent maintenant utiliser le code ci-dessous pour créer une fabrique de compteurs et l'utiliser pour créer facilement un nouvel objet Meter.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
            IMeterFactory meterFactory = serviceProvider.GetRequiredService<IMeterFactory>();

            MeterOptions options = new MeterOptions("MeterName")
            {
                 Version = "version",
            };

            Meter meter = meterFactory.Create(options);

Permettre la création de Meters et Instruments avec des balises

Les Meters et les Instruments peuvent également être créés avec des balises de paires clé-valeur attachées. Cette fonctionnalité permet aux agrégateurs de mesures métriques publiées de différencier les valeurs agrégées sur la base de ces balises.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
            MeterOptions options = new MeterOptions("name")
            {
                Version = "version",

                // Attach these tags to the created meter
                Tags = new TagList() { { "MeterKey1", "MeterValue1" }, { "MeterKey2", "MeterValue2" } }
            };

            Meter meter = meterFactory.Create(options);

            Instrument instrument = meter.CreateCounter<int>("counter", null, null, new TagList() { { "counterKey1", "counterValue1" } });
            instrument. Add(1);

SDK : Source Link fait partie du SDK .NET !

Le SDK .NET inclut désormais Source Link pour améliorer l'expérience de l'IDE lors de l'inspection des paquets NuGet liés à la source. L'objectif est qu'en intégrant Source Link dans le SDK au lieu d'exiger une PackageReference séparée, plus de paquets incluront cette information par défaut. Nous pensons que cela améliorera l'expérience des développeurs en matière d'IDE !

Source Link est un système indépendant du langage et du contrôle de la source qui fournit des expériences de débogage de source de première classe pour les binaires. L'objectif du projet est de permettre à n'importe qui de construire des bibliothèques NuGet pour fournir un débogage des sources à leurs utilisateurs avec peu ou pas d'effort supplémentaire. Source Link est soutenu par Microsoft et est activé par des bibliothèques telles que .NET Core et Roslyn.

Visual Studio et de nombreux autres éditeurs prennent en charge la lecture des informations Source Link à partir des symboles pendant le débogage. Les éditeurs peuvent télécharger et afficher la source appropriée spécifique au commit pour les utilisateurs, telle que raw.githubusercontent, qui permet des points d'arrêt et toutes les autres sources de débogage sur les dépendances arbitraires de NuGet.

L'implémentation de Source Link inclut des fournisseurs pour git, GitHub, GitLab, Azure Repositories, et BitBucket, mais il y a encore plus de fournisseurs disponibles sur NuGet.

SDK : Nouveaux analyseurs de bibliothèques .NET

Les analyseurs sont des partenaires de codage intégrés au SDK et à l'environnement de développement interactif (IDE) qui identifient les problèmes et suggèrent des corrections au fur et à mesure que vous écrivez du code. À partir de .NET 8 Preview 1, notre équipe a ajouté plusieurs analyseurs et correcteurs de code qui aident les développeurs à vérifier l'utilisation correcte et/ou plus performante des API des bibliothèques .NET.

Voir la liste des analyseurs.

Nous prévoyons de continuer à ajouter d'autres analyseurs à .NET 8 afin d'aider les développeurs à écrire un meilleur code et nous espérons que la communauté apportera encore plus de contributions. Il s'agit d'une excellente occasion pour la communauté d'ajouter une nouvelle fonctionnalité complète au SDK .NET 8.

SDK : Linux autonome

Le SDK Linux construit à partir d'une distribution (source-build) peut maintenant construire des applications autonomes qui utilisent des paquets d'exécution source-build. Un paquet d'exécution spécifique à la distribution sera fourni avec le SDK construit à la source. Lors du déploiement d'applications autonomes, ce paquetage d'exécution sera référencé, ce qui permettra à l'utilisateur de bénéficier de cette fonctionnalité. Veuillez noter qu'il n'y a pas de changement pour le SDK construit par MS.

SDK : Self-contained n'est plus une valeur par défaut

Depuis .NET 6, la spécification d'une durée d'exécution lors de la publication entraîne l'avertissement suivant :

Code : Sélectionner tout
> warning NETSDK1179: One of '--self-contained' or '--no-self-contained' options are required when '--runtime' is used.

Pour .NET 8, cela va enfin disparaître. Dorénavant, -r/--runtime n'impliquera plus --self-contained pour les applications ciblant net8.0 et les Target Frameworks supérieurs. Si vous souhaitez un tel comportement, vous devrez soit

  • ajouter l'option CLI explicitement, ou
  • ajouter la propriété <SelfContained>true</SelfContained> à vos fichiers de projet.

Les applications ciblant net7.0 ou une version inférieure ne sont pas affectées.

Nous faisons ce changement parce que nous pensons que cibler des plateformes spécifiques est une décision indépendante de l'intégration du runtime pour cette plateforme. Le fait que plus d'applications soient déployées par défaut en fonction du framework signifie que le runtime sur lequel l'application fonctionne peut être mis à jour en toute sécurité sans nécessiter de reconstruction ou de redéploiement. Cela permet également de réduire la taille des applications par rapport aux déploiements autonomes.

Images composites Alpine ASP.NET Docker

Nous proposons désormais une nouvelle image ASP.NET Docker qui utilise une nouvelle variante de la compilation prête à l'emploi (R2R) appelée "composite". Les images R2R composites sont construites en compilant plusieurs assemblages MSIL en un seul binaire de sortie R2R. Les images composites peuvent présenter une combinaison d'avantages : réduction du temps JIT, réduction des performances au démarrage et réduction de la taille de l'image R2R.

Les images composites ont un couplage de version plus étroit. Cela signifie que l'application finale ne peut pas utiliser des versions différentes du framework (telles que System.Reflection.Metadata et/ou les binaires ASP.NET) que celles qui sont intégrées dans l'image composite. Cette limitation est la raison pour laquelle nous produisons une nouvelle saveur d'image. Il est possible que vos applications ne fonctionnent pas avec le composite, tel qu'il est construit actuellement.

Cette nouvelle image de conteneur est nouvelle. Nous avons décidé de commencer par une nouvelle variante basée sur Alpine. Les images alpines sont souvent choisies en raison de leur taille réduite, ce qui correspond à l'objectif de ce projet. Il est possible que nous étendions le support à d'autres types d'images, comme nos images sans distorsion, à l'avenir.

Où peut-on se procurer les images composites ?

Pour l'instant, les images composites sont disponibles en aperçu dans le repo mcr.microsoft.com/dotnet/nightly/aspnet. Les tags sont listés avec le suffixe -composite dans la page officielle nightly Dotnet Docker.

L'hôte d'exécution détermine les ressources spécifiques au RID sans graphique RID par défaut

Lors de l'exécution d'une application avec des ressources spécifiques au Runtime (RID), l'hôte détermine quelles ressources sont pertinentes pour la plateforme sur laquelle elle s'exécute. Cela s'applique à la fois à l'application elle-même et à la logique de résolution utilisée par AssemblyDependencyResolver. Par défaut, dans .NET 8, cette détermination n'utilisera plus le graphe RID, mais s'appuiera sur une liste connue de RID basée sur la façon dont le runtime lui-même a été construit.

Le graphe RID s'est avéré coûteux à maintenir, difficile à comprendre et généralement fragile. Ce changement fait partie d'un objectif à plus long terme visant à simplifier notre modèle RID.

Codegen

L'optimisation dynamique guidée par le profil (PGO) est désormais activée par défaut, ce qui signifie que les paramètres de configuration spéciaux ne sont plus nécessaires. Nous prévoyons que les performances d'une large catégorie d'applications s'amélioreront de 5 % à 500 % (15 % étant une attente raisonnable), en fonction de la nature des goulets d'étranglement de l'application. Dans notre série de référence locale d'environ 4 600 tests, 23 % des applications se sont améliorées de 20 % ou plus.


L'expérience des clients avec PGO dans les versions précédentes a été uniformément positive. Cependant, si vous ne connaissez pas encore Dynamic PGO, nous sommes impatients de connaître vos expériences (bonnes ou mauvaises).

Si nécessaire, vous pouvez vous désengager de Dynamic PGO via

<TieredPGO>false</TieredPGO>

dans votre fichier .csproj ou via des paramètres similaires dans la configuration ou l'environnement d'exécution.

Optimisation de l'accès aux champs ThreadStatic pour les types GC

Les accès aux champs marqués comme ThreadStaticLocal sont maintenant optimisés pour les types primitifs. Avec le PR#85619, nous avons également optimisé l'accès aux champs pour les types de référence. Ces changements ont conduit à de très bonnes améliorations dans un certain nombre de benchmarks : (133 sur windows/arm64, 23 sur windows/x64, 16, 13, 11 améliorations).

Arm64

La Preview 5 apporte également un certain nombre d'optimisations peephole :

  • Avec le PR#85032, nous avons activé l'optimisation peephole pour remplacer str pair par stp.
  • Avec le PR#85657, nous avons activé l'optimisation peephole pour remplacer la paire de ldr/str par ldp/stp à l'intérieur du prolog.

Optimisations générales

Notre équipe a publié un certain nombre d'optimisations générales qui incluent :

  • Les instructions x64 telles que movzx, movsx et movsxd ont été optimisées dans le PR#85780, ce qui a légèrement amélioré le code-gen en éliminant plus d'instructions mov redondantes.
  • Le PR#86318 a amélioré le pliage des constantes pour certains objets gelés (objets non-GC). Il a permis de réduire la taille du code généré de près de 10 fois (par exemple, de 424 octets à 41 octets).

AVX-512

  • Le PR#85389 a activé l'AVX-512 pour les déroulements de blocs, ce qui augmente les plages où l'on avait auparavant recours à memcpy/memset et réduit le temps d'exécution de moitié.
  • Diverses fonctions intrinsèques pour les entiers sont activées pour AVX512F, AVX512BW et AVX512CD, PR#85833.

Améliorez votre productivité dans VS Code avec l'extension C# Dev Kit !

L'extension C# Dev Kit dans VS Code est maintenant disponible en avant-première publique dans VS Code ! Nous apprécierions vos commentaires sur l'utilisation de C# Dev Kit avec .NET 8.

Conçu pour améliorer votre productivité en C# dans VS Code, C# Dev Kit vous aide à gérer votre code avec un explorateur de solutions, à écrire du code plus rapidement grâce à des suggestions et des compléments assistés par l'IA, et vous offre de nouvelles capacités pour exécuter et déboguer des tests dans l'explorateur de tests. Grâce à un service de langage alimenté par Roslyn, C# Dev Kit améliore aussi considérablement les performances des fonctions du langage C# telles que la navigation dans le code, le refactoring, IntelliSense, etc.

Résumé

L'aperçu 5 de .NET 8 contient de nouvelles fonctionnalités et améliorations passionnantes qui ont été rendues possibles grâce au travail acharné et au dévouement d'une équipe diversifiée d'ingénieurs de Microsoft ainsi que d'une communauté open-source passionnée. Nous tenons à remercier sincèrement tous ceux qui ont contribué à .NET 8 jusqu'à présent, que ce soit par des contributions au code, des rapports de bogues ou des commentaires.

Vos contributions ont joué un rôle déterminant dans la réalisation des avant-premières de .NET 8, et nous sommes impatients de continuer à travailler ensemble pour construire un avenir meilleur pour .NET et l'ensemble de la communauté technologique.
Source : Microsoft

Et vous ?

Que pensez-vous de cet aperçu de .NET 8 ? Avez-vous identifié des fonctionnalités intéressantes ?

Voir aussi

Microsoft publie .NET 8 Preview 4, le quatrième aperçu de la dernière version du framework, et ajoute des nouvelles fonctionnalités ainsi que des améliorations passionnantes

Microsoft publie .NET 8 Preview 3, le troisième aperçu de la dernière version du framework, et inclut plusieurs changements ainsi que de nombreuses améliorations de performance

Microsoft publie .NET 8 Preview 2, le second aperçu de la dernière version du framework, et apporte plusieurs nouvelles fonctionnalités dans les bibliothèques

Microsoft publie .NET 8 Preview 1, le premier aperçu de la nouvelle version du framework, et ajoute plusieurs nouveautés dont l'extension de Native AOT à plus de scénarios et le support pour Linux

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

Avatar de daerlnaxe
Membre éprouvé https://www.developpez.com
Le 01/04/2024 à 9:49
Je viens de tester, je ne m'y retrouve absolument plus du tout.

Je ne sais pas s'il me manque des éléments, les pages d'aide n'ont pas suivi sur le site de ce que je vois. Magnifique !!!

De simples custom command pour wpf ont déclenché un enfer.
0  0