Представлен открытый проект Emscripten 6.0 — компилятор из C/C++ в WebAssembly
Состоялся выпуск открытого проекта Emscripten 6.0. Это решение позволяет компилировать код на C/C++ и других языках, для которых имеются фронтенды на базе LLVM, в универсальный низкоуровневый промежуточный код WebAssembly. Исходный код проекта опубликован на GitHub под лицензией MIT.
Полученный с помощью Emscripten результат можно использовать для интеграции с JavaScript‑проектами, запуска в веб‑браузере, использования в Node.js или создания обособленных многоплатформенных приложений, запускаемых при помощи wasm runtime.
В компиляторе Emscripten используются наработки проекта LLVM, а для генерации WebAssembly и оптимизации задействована библиотека Binaryen.
В качестве основной цели проекта Emscripten заявлено создание инструмента, позволяющего выполнять в вебе код независимо от языка программирования, на котором этот код изначально написан. В компилируемых приложениях могут использоваться вызовы стандартных библиотек C и С++ (libc, libcxx), расширения C++, многопоточность на базе pthreads, API POSIX и многие мультимедийные библиотеки. Отдельно предоставляются API для интеграции с Web API и кодом на JavaScript. Emscripten поддерживает трансляцию вывода библиотеки SDL2 через Canvas, а также реализует поддержку OpenGL и EGL через API WebGL, что позволяет преобразовывать в WebAssembly графические приложения и игры (например, имеется порт тулкита Qt, поддерживаются игровые движки Unreal Engine и Unity, а также движок симуляции физических процессов Bullet).
По информации OpenNET, помимо компиляции кода на C/C++ отдельно развиваются проекты для запуска в браузерах интерпретаторов и виртуальных машин для языков Lua, C#, Python, Ruby и Perl. Кроме того, возможно применение фронтэндов к LLVM, отличных от Clang, например, фронтэндов
Читать на habr.com