C# 言語設計の公式リポジトリへようこそ。ここで、新しい C# 言語機能が開発、採用、仕様化されます。
C# は、C# 言語設計チーム (LDT) によって、言語を実装する Roslyn プロジェクトと緊密に連携して設計されています。
以下を見つけることができます:
上記のバグや欠陥を発見した場合は、問題を提起するか、さらに良いことに、それらを修正するためのプル リクエストを残してください。
ただし、新機能の提案については、議論のために提起し、言語設計チームのメンバー (「チャンピオン」) から招待された場合にのみ、問題またはプル リクエストとして提案を送信してください。
ここでは完全な設計プロセスについて説明します。短い概要を以下に示します。
言語機能に関する議論は、このリポジトリのディスカッションの形式で行われます。
機能を提案したい場合、現在の設計メモや提案について議論したい場合など、新しいディスカッション トピックを開いてください。
短く、主題から逸脱しないディスカッションは、読まれる可能性が高くなります。コメント番号 50 を残した場合、それを読む人は少数になる可能性があります。ディスカッションをナビゲートしやすくし、有益なものにするために、いくつかの経験則に従ってください。
特定の構文の発生を防ぐ言語提案は、Roslyn アナライザーを使用して実現できます。既存の構文をオプションで違法にするだけの提案は、言語の複雑化を防ぐために言語設計委員会によって拒否されます。
C# LDM のメンバーは、提案が広範なチームによって検討される価値があると判断した場合、その提案を支持することができます。これは、その提案を C# 言語設計会議に持ち込むことを意味します。提案は、チャンピオンの問題ではなく、常にリンクされたディスカッションで議論されます。私たちは常にこのポリシーに従っていたわけではないため、多くのチャンピオンの問題について議論が行われることになります。現在、問題について新たな議論が行われないように問題をロックしています。各チャンピオンの問題にはディスカッション リンクがあります。
提案は、ディスカッション、実験、オフライン設計作業から情報を得た言語設計会議での決定の結果として進化します。
多くの場合、適切な設計を決定し、最終的にその機能を採用するかどうかを決定するには、機能のプロトタイプを実装して共有する必要があります。プロトタイプは、機能の実装と使いやすさの両方の問題を発見するのに役立ちます。プロトタイプは Roslyn リポジトリのフォークに実装され、次の基準を満たす必要があります。
承認されたら、機能は Roslyn で完全に実装され、言語仕様で完全に指定される必要があります。その後、提案は完成した機能 (C# 7.1 提案など) の適切なフォルダーに移動されます。
免責事項: アクティブな提案は、C# プログラミング言語の将来のバージョンに含めることが積極的に検討されていますが、言語の次期バージョンまたはいずれかのバージョンに最終的に組み込まれることは決して保証されません。提案は、設計チーム、コミュニティ、コードレビュー担当者、またはテストからのフィードバックに基づいて、上記のプロセスのどのフェーズでもいつでも延期または拒否される可能性があります。
リポジトリの問題にはいくつかの異なるマイルストーンがあります。
言語デザイン ミーティング (LDM) は、LDT と不定期の招待ゲストによって開催され、年ごとにフォルダーに整理されたミーティング フォルダー内のデザイン ミーティング ノートに文書化されます。設計会議メモの有効期間は、meetings/README.md に記載されています。 LDM は、どの提案に取り組むか、提案をどのように進化させるか、提案を採用するかどうか、いつ採用するかなど、将来の C# バージョンに関する決定が行われる場所です。
現在の ECMA-334 仕様は、C# 言語標準リポジトリにマークダウン形式で記載されています。
C# 言語のリファレンス実装は、Roslyn リポジトリにあります。このリポジトリは、言語機能の実装ステータスも追跡します。最近まで、言語設計の成果物が追跡される場所でもありました。現在進行中の提案について検討するため、少しお時間をいただきますようお願いいたします。