Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
11 июля 2011 года
Доступен релиз проекта Emscripten 1.4, в рамках которого развивается компилятор, способный преобразовать байткод LLVM в представление на языке JavaScript. Байткод LLVM может быть сгенерирован из исходных текстов на Cи/Си++ при помощи компиляторов lvm-gcc и clang, а также из кода на любом другом языке программирования для которого имеется LLVM-фронтэнд. После компиляции на выходе получается скрипт на языке JavaScript, который может быть выполнен внутри web-браузера, используя только штатный JavaScript-движок, без необходимости задействования дополнительных плагинов.
Компилятор написан на языке JavaScript, а тестовый фреймворк и управляющая утилита - на языке Python. Код открыт под лицензией MIT. Основной целью разработки является создание инструмента, который бы позволил выполнять код в Web независимо от языка программирования, на котором данный код написан. Из JavaScript-движков поддерживаются Mozilla SpiderMonkey и Google V8, в остальных движках работа не гарантируется.
Emscripten поддерживает трансляцию вывода библиотеки SDL через canvas. В разработке находится реализация поддержки OpenGL через WebGL. Скорость выполнения программ, преобразованных в Javascript, примерно в десять раз ниже, но ситуация меняется по мере реализации в JavaScript-движках новых методов оптимизации. Кроме того, некоторые дополнительные техники оптимизации планируется реализовать непосредственно в Emscripten.
Интересной демонстрацией возможностей Emscripten стала компиляция в JavaScript-представление интерпретаторов CPython и Lua, которые удалось использовать для выполнения скриптов на языках Python и Lua внутри web-браузера. Из других примеров успешно преобразованных в JavaScript-представление проектов можно упомянуть, игру Doom, движок симуляции физических процессов Bullet physics (с визуализацией через WebGL), PDF-просмотрщик Poppler, систему трассировки лучей (рендеринг организован через canvas), JPEG-декодер OpenJPEG и систему рендеринга TrueType-шрифтов FreeType.
Главным новшеством выпуска Emscripten 1.4 является обеспечение поддержки компиляции динамических библиотек и их загрузки в виде JavaScript-модулей. При этом библиотеки могут использоваться не только неразрывно с каким-то компилируемым приложением, но и сами по себе, т.е. можно преобразовать в JavaScript какую-то полезную библиотеку и использовать её из обычных web-приложений.
Из других похожих проектов можно отметить:
- Google Web Toolkit (GWT) - набор средств для разработки динамических web-приложений, которые изначально могут быть написаны на языке Java, а затем при помощи специального транслятора преобразованы в представление на базе JavaScript и HTML;
- Pyjamas - транслятор для преобразования кода на языке Python в представление на языке JavaScript;
- FlashCCompiler - средство для преобразования LLVM-байткода в вид, пригодный для выполнения в виртуальной машине Adobe Flash;
- Native Client - плагин, позволяющий выполнять в окне web-браузера обычные бинарные программы, ограниченные в специальном изолированном окружении.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.