Emscripten

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Soranoro (обсуждение | вклад) в 16:06, 28 декабря 2021 (Функция «Добавить ссылку»: добавлено 3 ссылки.). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Emscripten
Логотип программы Emscripten
Тип транспайлер и свободное и открытое программное обеспечение
Разработчик Alon Zakai[вд]
Написана на Си[2], C++[3] и JavaScript
Операционная система кроссплатформенность
Аппаратная платформа кроссплатформенность
Последняя версия
Репозиторий github.com/emscripten-co…
Лицензия лицензия MIT и открытая лицензия Иллинойсского университета[вд]
Сайт emscripten.org (англ.)


Emscripten — компилятор LLVM-байткода в код JavaScript, который может быть запущен в веб-браузере[4]. 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[5] и Doom 3[6], игровой движок Unreal Engine[7][8], и другие.[9]

Примечания