РГ21 С++

Материал из Циклопедии
Перейти к навигации Перейти к поиску

РГ21 С++ — российская рабочая группа, организованная для сбора и обсуждений предложений к стандарту C++, а также для подготовки их презентации и защиты на общих собраниях Международной организации по стандартизации (ISO).

Группа создана 28 марта 2016 года в рамках подкомитета 122 «Языки программирования, их окружение и системы программных интерфейсов» ТК 22 Федерального агентства по техническому регулированию и метрологии. РГ зарегистрирована Росстандартом — федеральным агентством, представителем России в ISO. О создании группы «Яндекс» объявил 24 мая 2016 года, идея создания принадлежит сотрудникам корпорации - Александру Фокину, Антону Полухину и Наталии Макаровой[1][2].

Первая открытая встреча рабочей группы состоялась 5 октября 2016 года[3][4].

По заявлению технического директора Яндекса Михаила Парахина, рабочая группа станет связующим звеном между российскими экспертами и международным комитетом в обсуждении стандарта[1].

Заседания комитета проходят три раза в год, каждое проводится в новом городе и длится неделю. На июль 2018 года РГ21 посетила пять заседаний, на которых было принято шесть предложений рабочей группы[5].

Предложения от РГ21[править]

РГ21 C++ разрабатывает предложения по улучшению работы с языком и выносит их на обсуждении Международного комитета по стандартизации. Принято 6 внесенных предложений, 9 находятся на рассмотрении[6].

Принятые[править]

  • Constexpr категория итераторов

Многие методы std::basic_string_view и std::array помечены как constexpr. Однако, constexpr для begin()/end() и подобных методов не гарантирует, что полученный итератор можно будет использовать в constexpr контексте. В данном предложении предлагается исправить этот недочёт и получить полнофункциональные контейнеры, которые можно использовать в constexpr контексте[7].

  • Constexpr для begin/end/reverse_iterator/move_iterator и базовых методов array

Пометить часть простых методов и классов как constexpr[8].

  • Constexpr для std::char_traits и std::string_view

Пометить часть методов std::char_traits как constexpr и убедиться в том, что данное изменение можно произвести, не пожертвовав производительностью[9].

  • Не создавать constexpr версии для всех стандартных контейнеров[10].
  • Constexpr для std::complex

Пометить большую часть методов std::complex как constexpr[11].

  • Constexpr для алгоритмов из <algorithm>, не выделяющих память[12].
  • Constexpr для всех методов std::char_traits

Пометить все методы стандартного класса std::char_traits как constexpr, что даст возможность использовать std::string_view в constexpr контексте[13].

  • Классы для получения backtrace

Добавить в стандарт классы для получения стека вызовов и работы с ним[14][15].

В работе[править]

  • Атрибут visible, упрощающий создание динамических библиотек

Добавить единый атрибут visible, которым будут помечаться экспортируемые и импортируемые из динамической библиотеки символы[16].

  • Принять в стандарт RAII класс для работы с динамическими библиотеками

Стандартизировать Boost.DLL, чтобы можно было с лёгкостью делать плагины и импортировать функции из динамических библиотек[17].

  • ConcurrentHashMap для C++

Добавить в стандарт реализацию thread-safe хеш-таблицы, которая будет удовлетворять требованиям эффективности достаточно широкого круга задач[18][19].

  • Добавить constexpr к __func__

Сделать возможным использование имени функции в constexpr выражениях[20].

  • Copy elision для подобъектов

Добавить больше разрешающих правил для copy elision или разрешить copy elision для всех случаев, когда копируемый объект или подобъект не используются после копирования[21].

  • Добавить inline constexpr для объекта std::nothrow[22].
  • constexpr std::regex

Множество языков программирования в данный момент компилируют регулярные выражения ещё перед запуском программы. Таким образом, когда программа стартует, все регулярные выражения уже преобразованы в оптимизированный конечный автомат. Предлагается добавить подобную возможность и для C++[23].

  • Добавить возможности кортежей к агрегатам - named tuples

Предложение позволит добавить функциональность кортежей к простым C++ структурам - агрегатам. Таким образом, разработчики C++ получат возможность работать с полями структур используя инексы, [24].

Мероприятия[править]

Летом 2016 года РГ21 С++ впервые участвовала во встрече международной рабочей группы WG21 по стандартизации C++. На ней был утвержден черновой вариант C++17 со множеством новых классов, методов и полезных нововведений языка. Следующая подобная встреча состоялась весной 2017 года[25].

24-25 февраля 2017 РГ21 С++ приняла участие в конференции «C++ Russia», организованной сообществом С++ User Group Russia в Москве[26][27].

В августе 2017 года рабочая группа участвовала в конференции С++ Siberia в Томске[28].

РГ21 С++ регулярно проводит открытые встречи, на которых проходят обсуждения перспектив развития С++, предложений от России, новостей с заседания Комитета, дальнейших планов рабочей группы[29][30][31][32][33].

Источники[править]

  1. 1,0 1,1 Яндекс организует рабочую группу по стандартизации языка C++. ИКС Медиа. Проверено 29 августа 2018.
  2. «Яндекс» создал рабочую группу для разработки стандартов С++ при участии российских программистов. vc.ru. Проверено 29 августа 2018.
  3. «О проекте». РГ21 С++ Россия. Проверено 29 августа 2018.
  4. Первая открытая встреча российской Рабочей группы по стандартизации С++. РГ 21 С++ Россия. Проверено 29 августа 2018.
  5. Яндекс организует рабочую группу по стандартизации языка C++. vc.ru. Проверено 29 августа 2018.
  6. В разработке. РГ21 С++ Россия. Проверено 29 августа 2018.
  7. Constexpr категория итераторов. РГ21 С++ Россия. Проверено 29 августа 2018.
  8. constexpr для begin/end/reverse_iterator/move_iterator и базовых методов array. РГ 21 С++ Россия. Проверено 29 августа 2018.
  9. Constexpr для std::char_traits и std::string_view. РГ 21 С++ Россия. Проверено 29 августа 2018.
  10. Убедить международный комитет не дублировать все контейнеры стандартной библиотеки. РГ21 С++ Россия. Проверено 29 августа 2018.
  11. Уstd::complex который можно использовать в constexpr. РГ21 С++ Россия. Проверено 29 августа 2018.
  12. Уstd::complex который можно использовать в constexpr. РГ21 С++ Россия. Проверено 29 августа 2018.
  13. Making all std::char_traits functions constexpr. РГ21 С++ Россия. Проверено 29 августа 2018.
  14. Классы для получения backtrace. РГ 21 С++ Россия. Проверено 29 августа 2018.
  15. Зачем включать стектрейс в стандарт C++?. Tproger. Проверено 29 августа 2018.
  16. Атрибут visible, упрощающий создание динамических библиотек. РГ21 С++ Россия. Проверено 29 августа 2018.
  17. Принять в стандарт RAII класс для работы с динамическими библиотеками. РГ21 С++ Россия. Проверено 29 августа 2018.
  18. ConcurrentHashMap для C++. РГ21 С++ Россия. Проверено 29 августа 2018.
  19. Предложение в стандарт C++: ConcurrentHashMap. Tproger. Проверено 29 августа 2018.
  20. Добавить constexpr к __func__. РГ21 С++ Россия. Проверено 29 августа 2018.
  21. Copy elision для субобъектов. РГ21 С++ Россия. Проверено 29 августа 2018.
  22. Добавить inline constexpr для std::nothrow внутри <new>. РГ 21 С++ Россия. Проверено 29 августа 2018.
  23. constexpr std::regex. РГ21 С++ Россия. Проверено 29 августа 2018.
  24. Добавить возможности кортежей к агрегатам. РГ21 С++ Россия. Проверено 11 января 2021.
  25. Что приняли в C++17, фотография Бьярне Страуструпа и опрос для C++20. РГ21 С++ Россия. Проверено 29 августа 2018.
  26. C++ Russia 2017. habr.com. Проверено 29 августа 2018.
  27. Встречаемся на С++ Russia 2017. habr.com. Проверено 29 августа 2018.
  28. C++17, который мы заслужили. habr.com. Проверено 29 августа 2018.
  29. Открытая встреча рабочей группы по стандартизации С++. Конференции и мероприятия Яндекса. Проверено 29 августа 2018.
  30. Конференции и мероприятия Яндекса. Конференции и мероприятия Яндекса. Проверено 29 августа 2018.
  31. Открытая встреча рабочей группы по стандартизации С++. Конференции и мероприятия Яндекса. Проверено 29 августа 2018.
  32. Открытая встреча Российской рабочей группы по стандартизации С++ (РГ21 С++). Конференции и мероприятия Яндекса. Проверено 29 августа 2018.
  33. Встреча рабочей группы по стандартизации С++. Конференции и мероприятия Яндекса. Проверено 29 августа 2018.