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

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

Изображение: OpenAI

Выпуск C++26 может сдвинуться с 2026 на 2027 год из-за спора о контрактах — механизме, который должен сделать код безопаснее, сообщает The Register. Проект стандарта не прошёл октябрьское голосование ISO.

Голосование проходило на предпоследнем этапе утверждения стандарта. За проект подали 13 голосов, против — девять, ещё 12 участников воздержались. Правила ISO допускают не более 25% голосов против. Для C++ отказ на столь позднем этапе — редкость.

Контракты позволяют задавать условия, которые должны выполняться до и после выполнения кода, и проверять их соблюдение. Такие проверки могут помочь выявить ошибки, способные привести к неопределённому поведению программы. Контракты уже исключали из C++20 из-за опасных настроек по умолчанию.

Создатель C++ Бьёрн Страуструп и его коллеги считают предложенную реализацию чрезмерно сложной и недостаточно проверенной. Один из членов комитета по стандартизации C++ возражает: предложение обсуждали годами и неоднократно одобряли большинством голосов, а отказ от него на столь позднем этапе вредит языку.

В ноябре рабочая группа ISO по C++ WG21 соберётся в Бразилии. Консультант консалтинговой компании Margo называет три возможных варианта:

  • убрать контракты из проекта и выпустить остальные изменения;
  • вынести контракты в отдельную техническую спецификацию для дальнейшей доработки;
  • незначительно изменить проект и провести повторное голосование.

Исключить контракты будет непросто: с их помощью уже усилили защиту библиотек, и многие из этих доработок придётся отменить.

Сергей
Автор: Сергей
Пишу о кибербезопасности и информационных технологиях на простом и понятном языке
Комментарии:

Как мы обрабатываем данные: политика обработки персональных данных