C++ официально поддерживает новую платформу: что это значит для разработчиков

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

C++ теперь официально поддерживает WASI: новый этап кроссплатформенной разработки

Комитет по стандартизации языка C++ (ISO/IEC JTC1/SC22/WG21) совместно с группой разработчиков LLVM и проектом WebAssembly анонсировали долгожданное событие: язык C++ получил официальную, документированную поддержку платформы WebAssembly System Interface (WASI). Это означает, что теперь разработчики могут писать системный код на C++, который будет работать не только на традиционных ОС (Windows, Linux, macOS), но и в среде WebAssembly за пределами браузера — на серверах, в IoT-устройствах и облачных edge-системах.

Что такое WASI и почему это важно для C++?

WASI (WebAssembly System Interface) — это стандартизированный системный интерфейс, который предоставляет WebAssembly-модулям доступ к файловой системе, сетевым сокетам, времени и другим ресурсам операционной системы. Ранее C++ мог компилироваться в WebAssembly, но взаимодействие с внешним миром было ограничено браузерным окружением. Теперь, с официальной поддержкой WASI, C++ получает полноценную изолированную среду для безопасного выполнения кода вне браузера.

  • Безопасность: Модули C++ выполняются в песочнице с контролем доступа к ресурсам — идеально для многопользовательских сервисов.
  • Портативность: Один бинарный файл .wasm работает на любой ОС, где есть среда выполнения WASI (Wasmer, Wasmtime, WAMR).
  • Производительность: Компиляция C++ напрямую в нативный WebAssembly-код (через Clang/LLVM) даёт почти нативную скорость выполнения, без накладных расходов виртуальной машины.

Что изменилось в экосистеме C++?

Главное новшество — появление официального руководства по портированию кода C++ под WASI и включение поддержки WASI в основной репозиторий LLVM. Теперь любой проект на C++ может быть скомпилирован для WASI с помощью простого флага компилятора:

clang++ --target=wasm32-wasi -O3 my_program.cpp -o my_program.wasm

Кроме того, были обновлены стандартные библиотеки C++ (libc++, libc++abi) для корректной работы с системными вызовами WASI. Разработчикам больше не нужно вручную настраивать линковку с внешними библиотеками — всё работает «из коробки».

Где это уже применяется?

  • Облачные вычисления: Запуск C++-микросервисов в изолированных WASI-контейнерах (например, в Fastly Compute@Edge или Cloudflare Workers с поддержкой WASI).
  • Встраиваемые системы: Использование WASI для безопасного обновления прошивок IoT-устройств, написанных на C++.
  • Научные расчёты: Перенос вычислительно ёмких модулей C++ (библиотеки линейной алгебры, симуляции) в WASI для кроссплатформенного запуска без перекомпиляции.

Что дальше?

В ближайших планах — полная поддержка многопоточности C++ в WASI (сейчас доступна только однопоточная модель) и интеграция с C++20/23 корутинами. Сообщество уже работает над адаптацией популярных библиотек (Boost, Qt, OpenCV) для компиляции под WASI. Следите за обновлениями на официальном сайте wasi.dev и в репозитории LLVM.

Если вы пишете на C++ и хоти

Рекомендуем библотеки