RFC [номер]: [название предложения]
Справка: Смотрите полный пример для понимания того, как писать RFC.
Краткое описание
В 1-2 предложениях опишите проблему, которую решает RFC, и предлагаемое решение.
Мотивация
Зачем нужен эта функция/изменение?
Объясните, почему этот RFC необходим, какую проблему он решает или какую потребность удовлетворяет.
Текущие проблемы
Опишите существующие проблемы текущего состояния, используя конкретные примеры (если есть).
Предложение
Основной дизайн
Опишите предлагаемое решение, включая основные концепции и структуры данных.
Примеры
Приведите примеры кода для демонстрации использования предложения:
# Пример кодаСинтаксические изменения
Если предложение включает синтаксические изменения, укажите сравнение до и после:
| До | После |
|---|---|
| Синтаксис A | Синтаксис B |
Детальный дизайн
Влияние на систему типов
Опишите влияние на систему типов, введение новых типов, ограничений типов и т.д.
Поведение во время выполнения
Опишите изменения в поведении во время выполнения (если есть).
Изменения в компиляторе
Перечислите компоненты компилятора, которые необходимо изменить.
Обратная совместимость
Оцените обратную совместимость и способы обработки существующего кода.
Компромиссы
Преимущества
- Перечислите преимущества принятия этого предложения
Недостатки
- Перечислите недостатки или риски этого предложения
Альтернативные решения
Перечислите рассмотренные альтернативные решения и объясните, почему они не были выбраны.
Стратегия реализации
Зависимости
Перечислите другие RFC или функции, от которых зависит этот RFC.
Риски
Определите потенциальные риски при реализации.
Открытые вопросы
Перечислите вопросы, требующие дальнейшего обсуждения.
Формат:
- [ ] Описание вопроса (@用户名: дополнение)Приложения (необязательно)
Приложение А: Записи обсуждения дизайна
Используется для записи подробных обсуждений в процессе принятия дизайнерских решений.
Шаблон обсуждения
### [Тема обсуждения]
> **Статус обсуждения**: [Открыто | Решено] **Инициатор**: @用户名 **Дата**: ГГГГ-ММ-ДД
#### Описание проблемы
[Опишите проблему для обсуждения]
#### Варианты
| Вариант | Описание | Преимущества | Недостатки |
| ------- | -------- | ------------ | ---------- |
| A | ... | ... | ... |
| B | ... | ... | ... |
#### Записи обсуждения
- [дата] @用户名: [мнение]
- [дата] @用户名: [мнение]
#### Решение
[Окончательное решение и обоснование]Правила управления обсуждениями
| Этап | Действие |
|---|---|
| В обсуждении | Записать в приложение, оставить открытым |
| Решено | Обновить решение, отметить статус, обновить соответствующий контент в основной части |
| Отклонено | Отметить причину отклонения, сохранить запись для справки |
Важно: После завершения обсуждения необходимо обновить соответствующий контент в основной части! Записи обсуждения можно сохранить как историческую справку.
Приложение Б: Записи дизайнерских решений
Записывайте принятые дизайнерские решения и их обоснования.
| Решение | Решение | Дата | Записал |
|---|---|---|---|
| ... | ... | ... | ... |
Приложение В: Глоссарий
| Термин | Определение |
|---|---|
| ... | ... |
Ссылки
- Ссылки на соответствующую документацию или внешние ресурсы
- Ссылки на аналогичные реализации или реализации в других языках
