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 se penche déjà sur C# 7
Une ébauche des fonctionnalités de cette version du langage publiée

Le , par Hinault Romaric

271PARTAGES

11  0 
Alors que le développement de C# 6 est encore en cours, les ingénieurs de Microsoft se penchent déjà sur la prochaine version du langage de programmation.

Mads Torgersen, gestionnaire de programme pour le langage C#, vient de publier sur la page GitHub du compilateur Roslyn, un ensemble de fonctionnalités en cours d’analyse pour une intégration dans C# 7.

Les fonctionnalités sont classées suivant sept catégories, dont « fort intérêt », « un certain intérêt », « petit, mais utile », « intéressant, mais ayant besoin d’un soutien du CLR », « probablement pas cette fois » et « probablement jamais ».

Dans la catégorie des fonctionnalités ayant un fort intérêt, on retrouve le support des tuples, les types Records/algebraic data, les références non nulles et les flux streams et disposal.

Dans la catégorie des fonctionnalités disposant d’un certain intérêt, on peut citer les types de retour covariants, un support accentué des arbres d’expression, une syntaxe pour les listes et dictionnaires, les types immuables, les types fournisseurs, les membres d’extension, les attributs sur les lambdas, etc.

Cinq fonctionnalités petites, mais utiles sont listées, dont les littéraux binaires, les séparateurs de chiffre, l’autorisation de l’extension des méthodes dans les classes non statiques et les paramètres IEnumerable. Cinq autres fonctionnalités sont marquées comme intéressantes, mais nécessitent d’un support de la machine virtuelle du Framework .NET (Common Language Runtime, en abregé CLR).

En fin de liste, on retrouve trois fonctionnalités qui ne seront probablement jamais intégrées a C#, parmi lesquelles, la prise en charge de ISupportInitialize, le support « INPC » et les types destructibles.

Il s’agit d’une ébauche du travail préliminaire des ingénieurs de Microsoft. Mads Torgersen met en garde les développeurs de ne pas déduire quoi que ce soit à propos de la forme finale de C# 7 (ou des versions ultérieures). Il précise que cette publication est faite dans le but de disposer d’un mécanisme de suivi pour le travail, pas une description des résultats.

Depuis le passage de son compilateur de nouvelle génération Roslyn en open source, Microsoft publie la liste des nouveautés du langage C#, avant même qu’elles ne soient implémentées.

Source : Projet Roslyn

Et vous ?

Quelles nouveautés voulez-vous voir intégrer à C# 7 ?

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

Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 29/04/2015 à 21:46
Citation Envoyé par Hinault Romaric Voir le message
Dans la catégorie des fonctionnalités ayant un fort intérêt, on retrouve le support des tuples, les types Records/algebraic data
Et surtout le pattern matching, inspiré des langages fonctionnels ; c'est d'ailleurs une des principales raisons pour l'introduction de types record.

Citation Envoyé par Hinault Romaric Voir le message
les références non nulles
En fait le lien indiqué vers la proposition #227 est trompeur. L'équipe C# n'envisage pas vraiment le support des références non nullables, parce que ce serait à peu près impossible à intégrer dans le langage sans casser tout ce qui existe déjà. C'est quelque chose qu'il aurait fallu prévoir dès la première version du langage ; maintenant c'est malheureusement trop tard...

Ce qui est envisagé, par contre, c'est un mécanisme de tracking par le compilateur de ce qui peut être null ou pas, par analyse statique du code. Enfin en tout cas c'est ce que j'en ai compris...

Citation Envoyé par Hinault Romaric Voir le message
et les flux streams et disposal.
"async streams and disposal", il manque un mot important dans la traduction

Les flux dont il s'agit ici sont en fait des séquences (IEnumerable<T>), je ne sais pas trop pourquoi Mads Torgersen a utilisé le terme "stream". Il n'y a actuellement aucun support dans le langage pour produire des séquences asynchrones, ce qui fait que les méthodes asynchrones sont quasiment obligées de renvoyer des collections déjà matérialisées, plutôt que des séquences lazy. Un des aspects de cette feature serait la possibilité de faire des itérateurs (yield return) asynchrones. Ca passerait probablement par une nouvelle interface IAsyncEnumerable<T>, qui serait le pendant asynchrone de IEnumerable<T>. On peut supposer que de nouveaux opérateurs Linq asynchrone seraient proposés pour supporter cette nouvelle interface.
(tout cela est en grande partie de la spéculation bien sûr)

Citation Envoyé par Hinault Romaric Voir le message
l’autorisation de l’extension des méthodes
Il s'agit des méthodes d'extension, et non de l'extension des méthodes

Citation Envoyé par Hinault Romaric Voir le message
le support « INPC »
INPC = INotifyPropertyChanged, une interface qu'il est souvent nécessaire d'implémenter dans les classes utilisées pour le binding en XAML, entre autres. L'implémentation étant un peu rébarbative (il faut écrire toutes les propriétés à la main au lieu d'utiliser des propriétés auto-implémentées), ça fait longtemps que beaucoup de gens réclament un support pour ça au niveau du language.

Citation Envoyé par Hinault Romaric Voir le message
Quelles nouveautés voulez-vous voir intégrer à C# 7 ?
Principalement celles qui sont rangées dans "Strong interest", parce que c'est des choses qui peuvent vraiment apporter beaucoup au langage.

  • Tuples, pour ne plus avoir à créer des classes bidon juste pour renvoyer plusieurs valeurs depuis une méthode
  • Pattern matching, qui va permettre rendre plus propres certains patterns de code (voir les exemples dans la proposition)
  • Record types, pour simplifier la création de classes qui ne servent qu'à encapsuler des données, et pour le pattern matching
  • Séquences asynchrones, parce que sur mon projet actuel j'en aurais très souvent besoin


Sinon, en vrac dans les autres catégories, j'aimerais bien avoir :
  • Plus de contraintes génériques (notamment enum et delegate)
  • Implémentation par défaut dans les interfaces (un peu comme les default methods de Java 8)
  • Type providers (comme ce qui existe en F#)
  • Plus de support pour les expression trees
4  0