Подготовка предложения в стандарт C++
Язык C++ постоянно меняется, чтобы отвечать современным требованиям. Международная организация по стандартизации — ISO — собирает идеи специалистов и учитывает их при подготовке очередного стандарта.
Мы — российская рабочая группа — поддержим вас на всех этапах: обсудим вашу идею, поможем оформить «кирпич», отвезём его в ISO и защитим на заседании. А чтобы вы ясно представляли себе весь путь, составили простую пошаговую инструкцию.
Каждый разработчик-эксперт может вписать своё имя в историю разработки языка, официально представив своё предложение.
Это не так уж трудно сделать, но нужно знать кое-какие особенности процесса.
Прежде, чем начать писать
Прежде всего стоит как следует обсудить вашу идею: вначале на этом сайте, затем в рассылке «ISO C++ Standard — Future Proposals». Иначе вы рискуете потерять время, так как:
После обсуждения стоит написать прототип, если это возможно. Предложения с прототипами ISO рассматривает быстрее. Кроме того, во время написания прототипа вы можете обнаружить недочёты вашей идеи или придумать, как то же самое сделать проще.
- Возможно, вашу идею кто-то уже проработал — и даже уже имеет готовый proposal.
- Незначительные изменения можно быстро вносить в стандарт без написания предложения через механизм defect report — во время обсуждения вам на это укажут.
- Ваша идея может не соответствовать общему направлению развития С++.
- Скорее всего, в вашем предложении есть много недочётов, из-за которых процесс принятия сильно затянется, — а обсуждение позволит их быстро устранить.
- Возможно, ваша идея в её нынешнем виде ломает уже написанный код.
- Наконец, вполне вероятно, что вы не учли какие-то важные требования к предложениям, — коллеги вам укажут это.
После обсуждения стоит написать прототип, если это возможно. Предложения с прототипами ISO рассматривает быстрее. Кроме того, во время написания прототипа вы можете обнаружить недочёты вашей идеи или придумать, как то же самое сделать проще.
Начинаем писать
-
1
Proposal пишут по-английски. Не стесняйтесь писать совсем простым языком, если вам так удобнее.
-
2
У документа должен быть заголовок, шапка, и, собственно, описание предложения к стандарту.
-
3
Заголовок пишите так, чтобы он описывал вашу идею.
-
4
В английском языке все слова в заголовке пишут с большой буквы, за исключением артиклей, союзов и предлогов короче пяти букв. В словах с чёрточкой с большой буквы пишутся обе части. Подробная правильная инструкция есть в Википедии.
-
5
В шапке укажите имена авторов предложения и контактную информацию.
-
6
Затем впишите номер документа. Пока предложение находится на стадии проработки, ему хватит универсального номера D????R0.
-
7
Позже, когда всё будет в целом готово, вам понадобится дать ему настоящий уникальный номер с цифрами вместо знаков вопроса. Чтобы получить такой номер, напишите В Телеграмм @antoshkka или воспользуйтесь англоязычной инструкцией для получения номера.
-
8
Когда же предложение обретёт окончательный вид, перед отправкой финальной версии замените D (draft) на P (proposal): P9999R0.
-
9
После номера укажите подгруппу, в которую собираетесь направить предложение:
Если вы не можете выбрать подгруппу, обратитесь к нам за помощью.
-
SG1 Concurrency
если ваша идея касается многопоточности, асинхронности, параллелизма или векторного выполнения
-
SG7 Reflection
если речь о рефлексии и метапрограммировании
-
SG6 Numerics
если вы пишете о работе с числами
-
SG14 Low Latency
если вы предлагаете поменять основополагающие механизмы языка С++ для повышения производительности
-
Evolution Incubator
если ваша идея меняет что-то в ядре языка С++ (например, добавляет новые конструкции языка или новые операторы)
-
Library Evolution Incubator
если вы хотите добавить новые классы или доработать старые
Если вы не можете выбрать подгруппу, обратитесь к нам за помощью.
-
SG1 Concurrency
-
10
Собственно текст предложения мы рекомендуем начинать с раздела «Introduction and Motivation» с коротким (буквально один-два абзаца) описанием вашей идеи и примером того, как она упростит людям жизнь.
Уже затем опишите её во всех деталях.
После детального описания мы советуем поместить вот такие разделы:
Вы можете добавить и любые другие разделы на своё усмотрение.
-
Impact on the Standard
с описанием того, какие заголовочные файлы предложение меняет, меняет ли ядро языка и от каких ещё не принятых предложений зависит
-
Design Decisions
почему именно так стоит решать проблему
-
Feature-Testing Macro
название и описание макроса, проверяющего компиляторы на предмет поддержки вашего предложения. Это нужно авторам библиотек
-
Acknowledgements
не забудьте перечислить тех, кто вам помогал, но не попал в соавторы
Вы можете добавить и любые другие разделы на своё усмотрение.
-
Impact on the Standard
-
11
Если почувствуете в себе силы на это, приложите к proposal перечень конкретных поправок, которые нужно внести в стандарт. Для этого возьмите текущий черновик на сайте eel.is/c++draft и подготовьте наглядный документ (пример). Если у комитета не будет нареканий по существу, готовые поправки помогут ускорить принятие идеи.
ISO принимает файлы в формате PDF или HTML.
Быстрый старт и готовые примеры
Пример proposal в формате HTML с автоматической подсветкой подсветкой синтаксиса C++: Stacktrace Library.
Открывайте текстовым редактором, убирайте лишнее и дописывайте своё :)