Emscripten
Emscripten | |
---|---|
Последняя версия | 3.1.15[1] (1 июля 2022) |
Emscripten — компилятор LLVM-байткода в код JavaScript, который может быть запущен в веб-браузере[2]. LLVM-байткод может быть получен из исходного кода на языке C или C++.
Основателем проекта является Алон Закай (Alon Zakai). Распространяется по лицензии MIT.
JavaScript-разработчики довольно часто сталкиваются с непростыми задачами, которые зачастую уже решены, но не на нужном им JavaScript, а совсем на другом языке программирования. Переписывать десятки, а то и сотни тысяч строк кода с C / C ++ на JavaScript — удовольствие на любителя. Это вовсе не прибавляет энтузиазма.
Дополнительная проблема портирования связана с тем, что эмуляция кода заведомо менее эффективна, чем исполнение нативного кода. И когда скорости пошагового моделирования работы чужого процессора не хватает, им приходится добавлять динамическую рекомпиляцию — автоматический перевод участков эмулируемого кода в JavaScript. Это довольно трудно, но после переработки умным JIT-компилятором код становится быстрее.
Целью развития проекта Emscripten является создание инструмента, который позволил бы выполнять в Интернете код независимо от языка программирования, на котором этот код написан. Emscripten позволяет осуществить компиляцию байткода LLVM в код на языке JavaScript, который может быть выполнен внутри веб-браузера, используя только штатный JavaScript-движок, без необходимости задействования дополнительных плагинов. Байткод LLVM может быть сгенерирован из исходных текстов C / C ++ с помощью компиляторов llvm-gcc и clang, а также из кода на другом языке программирования, для которого существует LLVM-фронтенд. Emscripten поддерживает трансляцию вывода библиотеки SDL через canvas, а также оказывает поддержку OpenGL через WebGL.
Среди проектов, которые удалось успешно пересобрать для работы в браузере, можно отметить ядро NetBSD, интерпретаторы CPython, Ruby и Lua, PDF-просмотрщик Poppler, систему рендеринга TrueType-шрифтов FreeType, декодировщик видео H.264, игры Doom[3] и Doom 3[4], игровой движок Unreal Engine[5][6], и другие.[7]
Примечания
- ↑ 3.1.15 . Дата обращения: 1 июля 2022. Архивировано 1 июля 2022 года.
- ↑ Walton, Zach Easily Port C++ To HTML5/JavaScript With Emscripten (недоступная ссылка). WebProNews. iEntry Network (4 апреля 2012). Дата обращения: 30 июля 2018. Архивировано 30 июля 2013 года.
- ↑ JS-DOS / GAMES / DOOM . Дата обращения: 30 июля 2018. Архивировано 19 июля 2018 года.
- ↑ D3Wasm: a port of id Tech 4 / Doom 3 engine to WebAssembly . Дата обращения: 1 марта 2019. Архивировано 4 марта 2019 года.
- ↑ Unreal Engine . Дата обращения: 30 июля 2018. Архивировано 11 апреля 2015 года.
- ↑ Mozilla and Epic Preview Unreal Engine 4 Running in Firefox . Дата обращения: 30 июля 2018. Архивировано 6 октября 2014 года.
- ↑ Компилятор Emscripten достиг возможности собственной пересборки Архивная копия от 7 апреля 2014 на Wayback Machine // opennet.ru 13.11.2012