Спор о контрактах поставил под угрозу выпуск C++26 в 2026 году

Изображение: OpenAI
Выпуск C++26 может сдвинуться с 2026 на 2027 год из-за спора о контрактах — механизме, который должен сделать код безопаснее, сообщает The Register. Проект стандарта не прошёл октябрьское голосование ISO.
Голосование проходило на предпоследнем этапе утверждения стандарта. За проект подали 13 голосов, против — девять, ещё 12 участников воздержались. Правила ISO допускают не более 25% голосов против. Для C++ отказ на столь позднем этапе — редкость.
Контракты позволяют задавать условия, которые должны выполняться до и после выполнения кода, и проверять их соблюдение. Такие проверки могут помочь выявить ошибки, способные привести к неопределённому поведению программы. Контракты уже исключали из C++20 из-за опасных настроек по умолчанию.
Создатель C++ Бьёрн Страуструп и его коллеги считают предложенную реализацию чрезмерно сложной и недостаточно проверенной. Один из членов комитета по стандартизации C++ возражает: предложение обсуждали годами и неоднократно одобряли большинством голосов, а отказ от него на столь позднем этапе вредит языку.
В ноябре рабочая группа ISO по C++ WG21 соберётся в Бразилии. Консультант консалтинговой компании Margo называет три возможных варианта:
- убрать контракты из проекта и выпустить остальные изменения;
- вынести контракты в отдельную техническую спецификацию для дальнейшей доработки;
- незначительно изменить проект и провести повторное голосование.
Исключить контракты будет непросто: с их помощью уже усилили защиту библиотек, и многие из этих доработок придётся отменить.



