Bienvenue sur le dépôt officiel pour la conception du langage C#. C'est ici que les nouvelles fonctionnalités du langage C# sont développées, adoptées et spécifiées.
C# est conçu par la C# Language Design Team (LDT) en étroite coordination avec le projet Roslyn, qui implémente le langage.
Vous pouvez trouver :
Si vous découvrez des bugs ou des lacunes dans ce qui précède, veuillez laisser un problème pour les signaler, ou mieux encore : une pull request pour les corriger.
Toutefois, pour les propositions de nouvelles fonctionnalités , veuillez les soumettre à la discussion et soumettre une proposition sous forme de problème ou de demande d'extraction uniquement si vous êtes invité à le faire par un membre de l'équipe de conception linguistique (un « champion »).
Le processus de conception complet est décrit ici. Un aperçu plus court est ci-dessous.
Le débat concernant les fonctionnalités du langage a lieu sous la forme de discussions dans ce référentiel.
Si vous souhaitez suggérer une fonctionnalité, discuter des notes ou propositions de conception actuelles, etc., veuillez ouvrir un nouveau sujet de discussion.
Les discussions courtes et centrées sur le sujet ont beaucoup plus de chance d’être lues. Si vous laissez le commentaire numéro cinquante, il est probable que seules quelques personnes le liront. Pour faciliter la navigation dans les discussions et en tirer profit, veuillez respecter quelques règles empiriques :
Des propositions de langage qui empêchent l'apparition d'une syntaxe spécifique peuvent être réalisées avec un analyseur Roslyn. Les propositions qui rendent facultativement illégale la syntaxe existante seront rejetées par le comité de conception du langage afin d'éviter une complexité accrue du langage.
Lorsqu'un membre du LDM C# estime qu'une proposition mérite d'être examinée par l'ensemble de l'équipe, il peut la défendre, ce qui signifie qu'il la présentera à la réunion de conception du langage C#. Les propositions sont toujours discutées dans des discussions liées, et non dans le cadre de la question des champions. Nous n'avons pas toujours suivi cette politique, c'est pourquoi de nombreux problèmes de champions feront l'objet de discussions à ce sujet ; nous verrouillons désormais les problèmes pour empêcher de nouvelles discussions à leur sujet. Chaque numéro de champion aura un lien de discussion.
Les propositions évoluent à la suite des décisions prises lors des réunions de conception linguistique, qui sont éclairées par des discussions, des expériences et des travaux de conception hors ligne.
Dans de nombreux cas, il sera nécessaire de mettre en œuvre et de partager un prototype d'une fonctionnalité afin de trouver la bonne conception et, finalement, de décider d'adopter ou non la fonctionnalité. Les prototypes aident à découvrir à la fois les problèmes de mise en œuvre et d’utilisabilité d’une fonctionnalité. Un prototype doit être implémenté dans un fork du dépôt Roslyn et respecter la barre suivante :
Une fois approuvée, une fonctionnalité doit être entièrement implémentée dans Roslyn et entièrement spécifiée dans la spécification du langage, après quoi la proposition est déplacée dans le dossier approprié pour une fonctionnalité terminée, par exemple les propositions C# 7.1.
AVIS DE NON-RESPONSABILITÉ : Une proposition active est activement examinée pour être incluse dans une future version du langage de programmation C#, mais n'est en aucun cas garantie qu'elle sera finalement incluse dans la prochaine ou dans n'importe quelle version du langage. Une proposition peut être reportée ou rejetée à tout moment au cours de n'importe quelle phase du processus ci-dessus en fonction des commentaires de l'équipe de conception, de la communauté, des réviseurs de code ou des tests.
Nous avons quelques étapes différentes pour les problèmes sur le dépôt :
Les réunions de conception linguistique (LDM) sont organisées par le LDT et des invités occasionnels, et sont documentées dans les notes de réunion de conception dans le dossier des réunions, organisées en dossiers par année. La durée de vie d’une note de réunion de conception est décrite dans meetings/README.md. Les LDM sont l'endroit où sont prises les décisions concernant les futures versions de C#, y compris les propositions sur lesquelles travailler, la manière de faire évoluer les propositions, ainsi que l'opportunité et le moment de les adopter.
La spécification ECMA-334 actuelle peut être trouvée sous forme de démarque sur le référentiel C# Language Standard.
L'implémentation de référence du langage C# se trouve dans le référentiel Roslyn. Ce référentiel suit également l'état de mise en œuvre des fonctionnalités du langage. Jusqu'à récemment, c'était également là que les artefacts de conception du langage étaient suivis. Veuillez prévoir un peu de temps pendant que nous avançons sur les propositions actives.