
C’est partie pour les NouveautĂ©s dotnet 6.
Pour rappel dotnet 6 est prévue pour sortie en novembre 2021 !
Un vrai travail sur l’amĂ©lioration des performances
des améliorations autour du File
des amélioration dans Blazor et Maui
- Un fileStream qui a été optimisé.
Ils ont dĂ©tectĂ© des goulets d’Ă©tranglement avec la gestion async qui se syncrhonisait avec Windows.
Ils ont dĂ©cidĂ© d’arrĂȘter le traitement actuel sur les fichiers recherchĂ©s / indexĂ©s, pour travailler en mĂ©moire.
Amélioration de 10 à 100 x.
- Amélioration du ReadAsync
- Mise en place du Scatter/Gather IO ou Vectored IO
Quelques breaking changes
- Principalement au sujet de l’utilisation de la PropriĂ©tĂ© FileStream.Position.
Si on souhaite garder l’approche dotnet 5
{
« configProperties »: {
« System.IO.UseNet5CompatFileStream »: true
}
}
Travail sur le PGO (Profile guided optimization)
Retravail complet du PGO
Motivé par la refonte de : crossgen2
Permet de faire du code AOT.
Par la suite, ça va permettre par exemple le version bubble
Travail sur le StaticPGO pour l’AOT et le Dynamic PGO pour le RyuJIT.
Autres améliorations
- .net 6 se prĂ©pare Ă HTTP/3 en preview pour l’instant.
- LINQ a Ă©tĂ© amĂ©liorĂ© aussi avec l’ajout de plusieurs nouvelles mĂ©thodes
dont MaxBy et MinBy, Chunk
Des amélioration autour de EF core
Possibilité de générer une table temporelle
La possibilitĂ© d’ajouter des migrations Ă un lot (bundle) de migration
Mise en place d’un mappage de prĂ©convention
PossibilitĂ© d’utiliser des modĂšles compilĂ©s => optim de 10 fois plus rapide.
âŠ
Des amĂ©liorations autour d’asp.net core
Amélioration de la prise en compte de Blazor client avec javascript
Prise en compte d’angular 12 pour les templates de gĂ©nĂ©ration
L’amĂ©lioration de la possibilitĂ© de construire des APIs minimales
Injection des services sans le Tag Fromservices
Et bien sĂ»r l’arrivĂ©e de C# 10 !
Rappelons déjà ce qui arrivait avec C# 9 :
- les records : presque classe sans l’etre, dans le but de reprĂ©senter des donnĂ©es pures, immutables
- le init only : pouvoir ajouter le mot clef init, pour permettre une seule mise à jour de la valeur de la propriété
- le top level : oĂč la possibilitĂ© de se passer des namespace et static
- plus besoin de spécifier le type quand on fait le new
- les lambda expressions statics
- l’arrivĂ©e de l’attribut ModuleInitializer : ça permet Ă une mĂ©thode d’ĂȘtre chargĂ©e au lancement de l’assembly
Et en C# 10 alors ?
- déclaration du namespace pour le fichier, sans accolade
- possibilitĂ© d’appeler une sous propriĂ©tĂ© via un pattern : { Prop1.Prop2: 12 } https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/extended-property-patterns
- la possibilitĂ© d’avoir des attributs gĂ©nĂ©riques (comme les classes, les interfaces ou les mĂ©thodes)
- la possibilité de mettre des attributs sur des lambdas
- l’attribut CallerArgumentExpression : pour avoir plus d’info ce qui est passĂ© en paramĂštre d’une fonction
MAUI
DerniÚre news : MAUI ne sera pas livré avec dotnet 6 mais avec la release mineure suivante, à priori.