На Reddit-е увидел ссылку на текст от Герба Саттера по поводу проблем с C++26: When a language’s creator and its owners strongly disagree: C++26 post-DIS, historical experience, and paths forward
Попробовал поверхностно ознакомиться, но что-то не понял о чем это все и к чему это все. Возможно, не хватает знания английского.
Сложилось впечатление, что речь идет о формальной стороне стандартизации языка. Типа вот у нас такие устоявшиеся практики, вот такая вот фигня приключилась, вот что мы можем сделать в рамках формальных процедур. Что вызывает у меня пригорание по двум причинам.
Во-первых, может быть пора уже как-то признать наличие совершенно разных C++ и таки подумать о том, что можно с этим сделать? Я о том, что есть "С++, описанный в стандарте", есть "C++, реализованный в самых свежих компиляторах" и еще есть "C++, доступный тебе в рамках конкретного проекта" (часть фич недоступна из-за их отсутствия в конкретных компиляторах на конкретных платформах, часть недоступна из-за принятых в проекте ограничений).
Как по мне, так это ненормально. И комитет таки должен признать, что в таком гигантском разрыве есть только и его вина, и что с этим самым разрывом комитету нужно что-то делать.
Каким может быть это "что-то" я уже описывал в разных местах. Например, принимать новые фичи в виде Technical Specifications, а компоновать конкретный стандарт из уже готовых TS-ов и включать в стандарт только те TS-ы, которые полностью реализованы в большой тройке компиляторов.
Либо вообще отказаться от ISO стандартизации и перестать страдать херней с тем, чтобы успеть запихнуть абы что в стандарт (на который на практике приходится чихать) на границе трехлетнего слота.
Во-вторых, как мне кажется, случившееся является вполне себе конкретным намеком на то, что писатели стандарта -- это активное меньшинство живущее в своем изолированном мирке, где все зашибись (т.е. "C++ из стандарта" и есть то, что они могут использовать каждый день на работе). И если это меньшинство включает в стандарт какую-то фичу, которая нравится этому самому меньшинству, то это не значит, что фича будет вызывать восторг у оставшегося молчаливого большинства.
Ну, например, приняли в C++20 модули. Кому-то же они понравились, раз приняли. А всем остальным приходится теперь ждать пока это "изобретение" наконец-то полноценно поддержат везде. Чтобы затем изучать очередную странную и не очевидную херню, добавленную зачем-то в уже работающий язык, ломающую старые самодельные системы сборок и разделяющую сообщество на "до и после".
Или, скажем, короутины в C++20. Которые, как мне кажется, слегка недоделанные. И без сколько-нибудь серьезной поддержки на уровне готовых вспомогательных классов в стандартной библиотеке.
Теперь вот очень и очень странные контракты. Которые, как по мне, без поддержки контрактов для виртуальных методов не должны были добавляться в язык в принципе. А с текущей процедурой работы над стандартом вообще получается маразм: скоуп C++26 закрывается в 2026-ом году с контрактами без поддержки виртуальных методов, и тут же, в же 2026-ом году в C++29 включается пропозал, который эту самую поддержку виртуальных методов в контракты добавляет.
И что это такое: диверсия или, что гораздо хуже, глупость формальное следование бюрократическим процедурам стандартизации?
И это не говоря про то, что сама эта поддержка контрактов для виртуальных методов предлагается несколько странной. Мягко говоря.
Т.е. у меня складывается впечатление, что сформировалась некая каста (извините, не подбирается более удачное название) людей, заседающих в комитете и определяющих куда и как язык движется. Эти люди научились находить консенсус между собой. В результате чего выходят стандарты с:
- модулями, которые не могут реализовать на протяжении многих лет;
- недоделанными короутинами;
- deducing this, который не совместим с экспортом классов из DLL (ведь стандарт вообще ни сном ни духом про существование DLL и SO);
- рефлексией с таким синтаксисом, после которого язык C++ начинает уверенно побеждать всех конкурентов в борьбе за звание языка с самыми уродскими синтаксическими конструкциями...
И вроде бы все было хорошо, комитет заседает, стандарты выходят. Но тут БАХ! И кто-то эту замечательную отлаженную схему по строительству воздушных замков взял и обломал.
Вот жеж уроды.