C#语言设计
欢迎来到C#语言设计的官方存储库。这是开发,采用和指定新的C#语言功能的地方。
C#由C#语言设计团队(LDT)与Roslyn Project密切协调,该项目实现了语言。
您可以找到:
如果您在上述发现错误或缺陷,请留下问题以提高它们,甚至更好:请求修复它们。
但是,有关新功能建议,请提出讨论,并仅由语言设计团队的成员(“冠军”)提交提案作为问题或拉力请求。
完整的设计过程在这里描述。较短的概述如下。
讨论
与语言特征有关的辩论是以本回购中讨论的形式进行的。
如果您想建议一个功能,请讨论当前的设计笔记或建议等,请打开一个新的讨论主题。
简短的讨论更有可能被阅读。如果您留下第五十个评论,那么只有少数人会读它。为了使讨论更容易导航和受益,请观察一些经验法则:
- 讨论应与C#语言设计有关。如果不是,它们将被公开关闭。
- 选择一个描述性主题,可以清楚地传达讨论范围。
- 坚持讨论的话题。如果评论是切线的,或者在亚主题上详细介绍,请开始新的讨论并链接。
- 您的评论对他人阅读有用,还是可以通过表情符号对现有评论的反应来充分表达?
罗斯林分析仪可以实现防止特定语法发生的语言建议。语言设计委员会将拒绝仅使现有语法可选的现有语法的建议,以防止语言复杂性增加。
建议
当C#LDM的成员发现提案值得更加广泛的团队考虑时,他们可以倡导它,这意味着他们将将其带入C#语言设计会议。在链接的讨论中始终讨论建议,而不是在冠军问题中进行讨论。我们并不总是遵守这项政策,因此许多冠军问题会对他们进行讨论。现在,我们锁定问题,以防止对它们进行新的讨论。每个冠军问题都将在其上有一个讨论链接。
设计过程
提案是由于语言设计会议中的决策而发展的,这些会议会通过讨论,实验和离线设计工作来告知。
在许多情况下,有必要实施和共享功能的原型,以登陆正确的设计,并最终决定是否采用该功能。原型有助于发现功能的实现和可用性问题。原型应在罗斯林仓库的叉子中实施,并符合以下条形:
- 解析(如果适用)应该有弹性:键入不应导致崩溃。
- 包括最小的测试,以端到端的工作显示功能。
- 包括最小的IDE支持(关键字着色,格式化,完成)。
一旦获得批准,就应在罗斯林(Roslyn)中完全实施一项功能,并在语言规范中完全指定,然后将提案移至适当的文件夹中,以获得完整的功能,例如C#7.1提案。
免责声明:正在积极考虑一项主动提案,将其纳入C#编程语言的未来版本,但并不能以任何方式保证最终包含在该语言的下一个或任何版本中。根据设计团队,社区,代码审阅者或测试的反馈,可以在上述过程的任何阶段的任何阶段,在上述过程的任何阶段中的任何时间推迟或拒绝提案。
里程碑
我们在存储库中有一些不同的里程碑:
- 工作集是当前正在积极进行的一系列拥护提案。并非这个里程碑中的所有内容都会制作下一个C#的下一个版本,但是它将在即将发布的版本中获得设计时间。
- 积压是一系列已被击败但并未积极进行的拥护提案。尽管在这些建议中欢迎社区的讨论和想法,但对这些功能的设计工作和实施审查的成本对于我们来说太高了,无法考虑社区实施,直到我们为此做好了准备。
- 任何时候是一系列已被裁定的拥护提案,但并未积极地从事并愿意接受社区实施。其中的问题可以在2个州之一中:需要批准的规范,并且需要实施。在LDM期间仍需要介绍那些需要规格的人以批准规格,但是我们愿意花时间在我们最早的方便下进行。
- LDM从该语言中拒绝的一系列建议可能永远不会。如果没有强大的需求或社区反馈,将来将不考虑这些建议。
- 编号的里程碑是已针对该特定语言版本实现的一组功能。对于封闭的里程碑,这些是随着该版本发货的一组东西。对于开放的里程碑,如果我们发现兼容性或其他问题,则可能会在以后提取功能。
语言设计会议
语言设计会议(LDMS)由LDT和偶尔被邀请的客人举行,并在Design会议记录中记录在“会议文件夹”中,每年在文件夹中组织。设计会议注释的寿命在会议/readme.md中描述。 LDMS是对未来C#版本的决定的地方,包括进行哪些提案,如何进化提案以及是否以及何时采用它们。
语言规范
当前的ECMA-334规范可以在C#语言标准存储库上以降低形式找到。
执行
C#语言的参考实现可以在Roslyn存储库中找到。该存储库还跟踪语言功能的实现状态。直到最近,这也是跟踪语言设计文物的地方。当我们进行积极的建议时,请留一点时间。
