csharplang README

The project's README from github.com/dotnet/csharplang. As one markdown file: README.md.

C# Language Design

Join the chat at https://gitter.im/dotnet/csharplang Chat on Discord

Welcome to the official repo for C# language design. This is where new C# language features are developed, adopted and specified.

C# is designed by the C# Language Design Team (LDT) in close coordination with the Roslyn project, which implements the language.

You can find:

If you discover bugs or deficiencies in the above, please leave an issue to raise them, or even better: a pull request to fix them.

For new feature proposals, however, please raise them for discussion, and only submit a proposal as an issue or pull request if invited to do so by a member of the Language Design Team (a "champion").

The complete design process is described here. A shorter overview is below.

Discussions

Debate pertaining to language features takes place in the form of Discussions in this repo.

If you want to suggest a feature, discuss current design notes or proposals, etc., please open a new Discussion topic.

Discussions that are short and stay on topic are much more likely to be read. If you leave comment number fifty, chances are that only a few people will read it. To make discussions easier to navigate and benefit from, please observe a few rules of thumb:

Language proposals which prevent specific syntax from occurring can be achieved with a Roslyn analyzer. Proposals that only make existing syntax optionally illegal will be rejected by the language design committee to prevent increased language complexity.

Proposals

When a member of the C# LDM finds that a proposal merits consideration by the broader team, they can Champion it, which means that they will bring it to the C# Language Design Meeting. Proposals are always discussed in linked discussions, not in the champion issue. We didn't always follow this policy, so many champion issues will have discussion on them; we now lock issues to prevent new discussion from occurring on them. Each champion issue will have a discussion link on it.

Design Process

Proposals evolve as a result of decisions in Language Design Meetings, which are informed by discussions, experiments, and offline design work.

In many cases it will be necessary to implement and share a prototype of a feature in order to land on the right design, and ultimately decide whether to adopt the feature. Prototypes help discover both implementation and usability issues of a feature. A prototype should be implemented in a fork of the Roslyn repo and meet the following bar:

Once approved, a feature should be fully implemented in Roslyn, and fully specified in the language specification, whereupon the proposal is moved into the appropriate folder for a completed feature, e.g. C# 7.1 proposals.

DISCLAIMER: An active proposal is under active consideration for inclusion into a future version of the C# programming language but is not in any way guaranteed to ultimately be included in the next or any version of the language. A proposal may be postponed or rejected at any time during any phase of the above process based on feedback from the design team, community, code reviewers, or testing.

Milestones

We have a few different milestones for issues on the repo:

Language Design Meetings

Language Design Meetings (LDMs) are held by the LDT and occasional invited guests, and are documented in Design Meeting Notes in the meetings folder, organized in folders by year. The lifetime of a design meeting note is described in meetings/README.md. LDMs are where decisions about future C# versions are made, including which proposals to work on, how to evolve the proposals, and whether and when to adopt them.

Language Specification

The current ECMA-334 specification can be found in markdown form on the C# Language Standard repository.

Implementation

The reference implementation of the C# language can be found in the Roslyn repository. This repository also tracks the implementation status for language features. Until recently, that was also where language design artifacts were tracked. Please allow a little time as we move over active proposals.

csharplang (dotnet/csharplang)

Searching Database…

Что это такое?Официальный репозиторий, где проектируется сам язык C#: здесь предлагают новые возможности языка, обсуждают их, принимают и оформляют спецификации. Этим занимается команда дизайна языка C# (Language Design Team, LDT) совместно с проектом Roslyn, в котором реализуется C#.
Сам компилятор C# пишется в этом репозитории или здесь только проектирование языка?Только проектирование: в репозитории лежат предложения, заметки со встреч и история по версиям, а не код. Эталонная реализация находится в репозитории Roslyn, а спецификация ECMA-334 — в отдельном репозитории C# Language Standard.
Как следить за тем, что проектируется для будущих версий C#, и можно ли предложить свои идеи?Читайте актуальные предложения по возможностям языка и заметки с дизайн-встреч по годам в папке meetings. Чтобы предложить идею, откройте Discussion; официальное предложение (proposal) оформляется только если участник команды дизайна языка (чемпион) вас пригласит.
Если моё предложение взял в работу чемпион, гарантированно ли оно попадёт в C#?Нет. На любом этапе его могут отложить или отклонить из-за отзывов или результатов тестирования — некоторые отклонённые идеи попадают в веху Likely Never и больше не рассматриваются, если только в них не возникнет сильная потребность у сообщества.
Кто решает, что попадёт в C#?Команда дизайна языка C# (Language Design Team, LDT) на своих встречах по дизайну языка (LDM). Заметки с каждой встречи публикуются в папке meetings по годам, и именно LDM решает, какие предложения будут прорабатываться, как они будут развиваться, а также будут ли и когда они приняты.
Какую роль во всём этом играет Roslyn?Roslyn — это проект, в котором C# реально реализован, то есть эталонная реализация языка. Прототипы новых возможностей создают в форках Roslyn, одобренные возможности там полностью реализуют, а этот репозиторий отслеживает статус их реализации.
Что означают метки вех (milestone) у предложений?Working Set — предложения с чемпионами, которые активно проектируются к ближайшему релизу. Backlog — разобраны, но пока не в работе. Any Time — открыты для реализации сообществом. Likely Never — отклонены на LDM. Пронумерованные вехи — возможности для конкретной версии языка.
Creator
dotnet
Size
15.6 MB
Stars
12.7K
Updated
CommitOct 16
Age
9y
Commits · 90 Days