РГ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].
Примечания
- Яндекс организует рабочую группу по стандартизации языка C++ . ИКС Медиа. Дата обращения: 29 августа 2018.
- «Яндекс» создал рабочую группу для разработки стандартов С++ при участии российских программистов . vc.ru. Дата обращения: 29 августа 2018.
- «О проекте» . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Первая открытая встреча российской Рабочей группы по стандартизации С++ . РГ 21 С++ Россия. Дата обращения: 29 августа 2018.
- Яндекс организует рабочую группу по стандартизации языка C++ . vc.ru. Дата обращения: 29 августа 2018.
- В разработке . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Constexpr категория итераторов . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- constexpr для begin/end/reverse_iterator/move_iterator и базовых методов array . РГ 21 С++ Россия. Дата обращения: 29 августа 2018.
- Constexpr для std::char_traits и std::string_view . РГ 21 С++ Россия. Дата обращения: 29 августа 2018.
- Убедить международный комитет не дублировать все контейнеры стандартной библиотеки . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Уstd::complex который можно использовать в constexpr . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Уstd::complex который можно использовать в constexpr . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Making all std::char_traits functions constexpr . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Классы для получения backtrace . РГ 21 С++ Россия. Дата обращения: 29 августа 2018.
- Зачем включать стектрейс в стандарт C++? . Tproger. Дата обращения: 29 августа 2018.
- Атрибут visible, упрощающий создание динамических библиотек . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Принять в стандарт RAII класс для работы с динамическими библиотеками . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- ConcurrentHashMap для C++ . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Предложение в стандарт C++: ConcurrentHashMap . Tproger. Дата обращения: 29 августа 2018.
- Добавить constexpr к __func__ . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Copy elision для субобъектов . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Добавить inline constexpr для std::nothrow внутри <new> . РГ 21 С++ Россия. Дата обращения: 29 августа 2018.
- constexpr std::regex . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- Добавить возможности кортежей к агрегатам . РГ21 С++ Россия.
- Что приняли в C++17, фотография Бьярне Страуструпа и опрос для C++20 . РГ21 С++ Россия. Дата обращения: 29 августа 2018.
- C++ Russia 2017 . habr.com. Дата обращения: 29 августа 2018.
- Встречаемся на С++ Russia 2017 . habr.com. Дата обращения: 29 августа 2018.
- C++17, который мы заслужили . habr.com. Дата обращения: 29 августа 2018.
- Открытая встреча рабочей группы по стандартизации С++ . Конференции и мероприятия Яндекса. Дата обращения: 29 августа 2018.
- Конференции и мероприятия Яндекса . Конференции и мероприятия Яндекса. Дата обращения: 29 августа 2018.
- Открытая встреча рабочей группы по стандартизации С++ . Конференции и мероприятия Яндекса. Дата обращения: 29 августа 2018.
- Открытая встреча Российской рабочей группы по стандартизации С++ (РГ21 С++) . Конференции и мероприятия Яндекса. Дата обращения: 29 августа 2018.
- Встреча рабочей группы по стандартизации С++ . Конференции и мероприятия Яндекса. Дата обращения: 29 августа 2018.