Черновик стандарта C++26 завершён с рефлексией, безопасностью памяти, контрактами и асинхронным фреймворком

Функции стандарта C++26
Черновик стандарта C++26 теперь завершён, по словам Херба Саттера, бывшего председателя комитета по стандартам ISO C++. Финальный черновик включает четыре основные области улучшений.
Рефлексия
Рефлексия предоставляет разработчикам доступ к внутренним механизмам C++, позволяя языку описывать себя и генерировать код без накладных расходов во время выполнения. Это создаёт прочную основу для метапрограммирования и может упростить будущую эволюцию языка, позволяя выражать новые функции в виде переиспользуемых библиотек времени компиляции.
Например, рефлексия позволяет использовать специализированный синтаксис для объявления интерфейсов C++:
class(interface) IFoo {
int f();
void g(std::string);
};Это преобразуется в классическое объявление интерфейса с виртуальными методами. Абстракция интерфейса является частью cppfront, компилятора, который собирается в чистый ISO C++ и включает другие абстракции, такие как:
copyableдля выражения типа с конструктором/оператором копирования/перемещенияorderedдля определения полностью упорядоченного типа с оператором <=>unionдля именованного размеченного объединенияregexи другие
Безопасность памяти
C++26 включает готовое устранение неопределённого поведения при чтении неинициализированных локальных переменных, а также проверку границ для большинства стандартных типов библиотеки, включая vector, span, string и string_view.
Эти изменения уже внедрены в производство в Apple и Google на сотнях миллионов строк кода C++. Только в Google они исправили более 1000 ошибок, прогнозируется предотвращение 1000–2000 ошибок в год и снижение частоты segfault в производственном парке на 30%.
Эти преимущества были достигнуты простой перекомпиляцией существующего кода с новым компилятором. Лишь в семи случаях компилятор не смог проанализировать высокооптимизированный код, потребовав от разработчиков использовать детализированный API для выборочного отключения безопасности памяти в этих конкретных частях.
Контракты
Контракты C++26 вносят защитное программирование в язык, улучшая как функциональную безопасность, так и безопасность памяти. Они позволяют разработчикам выражать предусловия и постусловия, которые не должны нарушаться в течение выполнения метода. Контракты переносят утверждения в объявления функций, делая их видимыми для вызывающих сторон и инструментов статического анализа.
C++ предлагает четыре способа обработки нарушений контрактов: игнорировать, наблюдать, принудительно выполнять и быстро принудительно выполнять. Контракты также предоставляют собственный механизм утверждений, заменяющий макрос assert из C.
Асинхронная модель: std::execution
C++26 представляет std::execution как фреймворк для выражения и управления параллелизмом и конкурентностью. Три основные абстракции — это планировщики, отправители и получатели, которые могут комбинироваться через набор настраиваемых асинхронных алгоритмов.
std::execution разработан для работы с корутинами C++20 и упрощает написание программ, использующих структурированный (строго вложенный по времени жизни) параллелизм и конкурентность, которые по своей конструкции свободны от гонок данных.
Два основных компилятора C++, GCC и Clang, уже реализовали большинство функций C++26 в процессе стандартизации.
📖 Read the full source: HN AI Agents
👀 Смотрите также

Claude Code v2.1.98 добавляет мастер Vertex AI, исправления безопасности и песочницу для подпроцессов.
Claude Code v2.1.98 представляет интерактивный мастер настройки Google Vertex AI, добавляет изоляцию подпроцессов с пространством имён PID в Linux и исправляет несколько уязвимостей безопасности, включая обход разрешений Bash и риски выполнения произвольного кода.

OpenClaw теряет экономически выгодный доступ к моделям GPT и Claude.
Пользователи OpenClaw больше не могут использовать модели Anthropic без оплаты высоких комиссий за API, а OpenAI значительно сократил квоты для Business и Teams аккаунтов до уровня, близкого к бесплатному тарифу, вынуждая пользователей обращаться к китайским или локальным моделям.

Выпуск Claude-Code версии 2.1.74: Исправления утечек памяти, оптимизация контекста и улучшения плагинов
Claude-Code v2.1.74 исправляет критическую утечку памяти в потоковых ответах API, которая вызывала неограниченный рост RSS на путях кода Node.js/npm. Обновление добавляет практические рекомендации к команде /context и вводит настройку autoMemoryDirectory для пользовательского хранилища автоматической памяти.

GitHub Copilot обновляет политику использования данных для обучения моделей.
GitHub начнет использовать данные взаимодействия пользователей Copilot Free, Pro и Pro+ для обучения моделей искусственного интеллекта с 24 апреля 2026 года, если пользователи не откажутся от этого. Пользователи Copilot Business и Enterprise не затронуты этим изменением.