Библиотека компилятора и оптимизатора на C++ для WebAssembly, включающая инструмент wasm-opt и сборку для JavaScript — binaryen.js.
emscripten-core/emscripten
Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.
- Звёзды
- 27,734
- Форки
- 3,572
- Открытые issues
- 2,527
- Последний коммит
- 4 часа назад
Что это?
Emscripten компилирует код на C и C++ в WebAssembly с помощью LLVM и Binaryen. Полученный код можно запускать в интернете, в Node.js и в автономных Wasm-средах. Команда emcc работает по тому же принципу, что gcc или clang, и создаёт модуль WebAssembly вместе с JavaScript-загрузчиком либо примером HTML-страницы.
Emscripten предоставляет веб-реализации переносимых API, таких как OpenGL и SDL2, благодаря чему существующие графические приложения можно портировать в браузер. В качестве примеров такого портирования приводятся крупные проекты — игровой движок Unity и Google Earth.
Проект в первую очередь ориентирован на C и C++ с использованием Clang, но его также можно интегрировать с другими компиляторами на базе LLVM, например с целью Rust wasm32-unknown-emscripten.
Ключевые возможности
- 01Компилирует код на C и C++ в WebAssembly с помощью LLVM и Binaryen.
- 02Позволяет запускать результат в браузерах, Node.js, Deno, Bun и автономных Wasm-средах.
- 03Предоставляет веб-реализации API OpenGL и SDL2.
- 04Может использоваться как прямая замена gcc или clang с командой emcc.
- 05Может создавать HTML-страницу с загрузчиком или отдельный JavaScript-файл.
Сценарии использования
- Портирование существующего настольного приложения или игры на C или C++ для запуска в браузере.
- Использование нативных библиотек на C или C++ в проекте Node.js.
- Сборка модулей WebAssembly из кода на C для использования в других Wasm-средах.
Быстрый старт
- 1
Установите Emscripten SDK (emsdk) со страницы загрузок
- 2
Скомпилируйте hello.c в файл JavaScript
emcc hello.c -o hello.js - 3
Запустите сгенерированный JavaScript с помощью Node.js
node hello.js
Что важно знать
- Настройка подразумевает установку цепочки инструментов emsdk со страницы загрузок, а не установку одного пакета.
Темы
Частые вопросы
- Что такое emscripten?
- Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах. Emscripten компилирует код на C и C++ в WebAssembly с помощью LLVM и Binaryen. Полученный код можно запускать в интернете, в Node.js и в автономных Wasm-средах. Команда emcc работает по тому же принципу, что gcc или clang, и создаёт модуль WebAssembly вместе с JavaScript-загрузчиком либо примером HTML-страницы.
- emscripten можно использовать бесплатно? Какая у него лицензия?
- emscripten распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- emscripten всё ещё поддерживается?
- Активно поддерживается. Последний коммит в emscripten — 21 окт. 2026 г..
- Для чего можно использовать emscripten?
- Портирование существующего настольного приложения или игры на C или C++ для запуска в браузере. Использование нативных библиотек на C или C++ в проекте Node.js. Сборка модулей WebAssembly из кода на C для использования в других Wasm-средах.
- Как установить emscripten?
- Установите Emscripten SDK (emsdk) со страницы загрузок Скомпилируйте hello.c в файл JavaScript: emcc hello.c -o hello.js Запустите сгенерированный JavaScript с помощью Node.js: node hello.js
- Где скачать emscripten?
- Исходный код и инструкции по установке — на GitHub: https://github.com/emscripten-core/emscripten
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Порт FFmpeg на WebAssembly и JavaScript для записи, конвертации и потоковой передачи видео и аудио в браузере.
Модульный набор технологий для компиляторов и инструментальных цепочек, включающий LLVM core, фронтенд Clang для C/C++, libc++ и линкер LLD.
Язык и компилятор в духе TypeScript, преобразующие типизированное подмножество TypeScript в модули WebAssembly.
Компилятор Go на базе LLVM для микроконтроллеров, WebAssembly (WASM/WASI) и инструментов командной строки.
Экспериментальный компилятор TypeScript и JavaScript, который превращает программы в нативные исполняемые файлы или WebAssembly без необходимости устанавливать Node.js.