Emscripten 3.0, набор инструментов для сборки WebAssembly с использованием LLVM

Недавно анонсирован выпуск новой версии компилятора Emscripten 3.0, который характеризуется тем, что позволяет компилировать код на C / C ++ и других языках, для которых доступны внешние интерфейсы на основе LLVM, в низкоуровневом универсальном промежуточном программном обеспечении WebAssembly.

Основная функция этой компиляции - ее последующая интеграция с проектами JavaScript, запускаемыми в веб-браузере, использованием в Node. Js или создавать кроссплатформенные автономные приложения, работающие со средой выполнения wasm.

О Emscripten

Главная цель развитие проекта Emscripten заключается в создании инструмента, позволяющего запускать код в Интернете, независимо от языка программирования, на котором он написан.

Скомпилированные приложения могут использовать стандартные вызовы библиотек C и C ++ (libc, libcxx), расширения C ++, многопоточность на основе pthreads, POSIX API и множество мультимедийных библиотек. API для интеграции с веб-API и кодом JavaScript предоставляются отдельно.

Эмскриптен поддерживает потоковый вывод библиотеки SDL2 через Canvas, а также обеспечивает поддержку OpenGL и EGL через WebGL, позволяя конвертировать графические приложения и игры в WebAssembly.

Практически любую переносимую базу кода C или C ++ можно скомпилировать в WebAssembly с помощью Emscripten.От высокопроизводительных игр, которые должны отображать графику, воспроизводить звуки, а также загружать и обрабатывать файлы, до фреймворков приложений, таких как Qt. Emscripten уже использовался для преобразования очень длинного списка реальных баз кода в WebAssembly, включая коммерческие базы кода, такие как Unreal Engine 4 и Unity Engine.

Помимо компиляции кода C / C ++, проекты разрабатываются отдельно, чтобы гарантировать запуск интерпретаторов и виртуальных машин для Lua, C #, Python, Ruby и Perl в браузерах. Также возможно применять не-Clang интерфейсы к LLVM, доступному для таких языков, как Swift, Rust, D и Fortran.

Особенно есть различия между встроенной средой выполнения и Emscripten, что означает, что в общем случае eНеобходимо внести некоторые изменения в нативный код. Тем не менее, многим приложениям нужно будет только изменить способ определения основного цикла, а также изменить обработку файлов с учетом ограничений браузера / JavaScript.

Существуют также ограничения, которые могут упростить миграцию некоторого кода - прочтите Руководство по переносимости, чтобы определить, где вам, возможно, потребуется приложить больше усилий.

Основные новые возможности Emscripten 3.0

В этой новой версии, которая представлена, библиотека musl C, используемая в emscripten, была обновлена ​​до версии 1.2.2 (версия 1.1.15 использовалась в ветви Emscripten 2.x).

Из библиотеки parseTools.js удалена часть функций, которые в основном используются в проекте: removePointing, указываяLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType, getStructuralTypeParts, getStructuralType, getStructuralTypeParts, getStructuralType, IEEEinTime, CompileType, CompileType, CompileTime, CompileTime, CompileTime, CompileTime, CompileTime, CompileTime, CompileType, CompileTime, CompileTime, CompileTime, CompileTime, CompileTime, CompileTime, CompileType, CompileTime, CompileType, Compiletime, CompileType, CompileTime, CompileTime, ComplicationType, IEETToHe

В то время как в шаблонах shell.html и shell_minimal.html вывод сообщений об ошибках которые происходят во время операции emscripten и выдаются приложением через stderr по умолчанию он изменен на использование console.warn вместо console.error.

Также подчеркивается, что добавлена ​​возможность указывать конкретную кодировку текста, используемую в именах файлов. Кодировку можно указать как суффикс при передаче имени файла, например «a.rsp.utf-8» или «a.rsp.cp1251»).

Наконец, если вам интересно узнать больше об Emscripten, вы можете ознакомиться с деталями проекта в его Официальный веб-сайт.

Точно так же вы можете ознакомиться с документацией в Интернете о том, как использовать Emscripten, справочный сайт, который мы можем порекомендовать, - это веб-сайт разработчика Mozilla: https://developer.mozilla.org.

Также важно отметить, что код проекта распространяется по лицензии MIT. Компилятор использует разработки из проекта LLVM, а библиотека Binaryen используется для генерации WebAssembly и оптимизации. Вы можете проверить свой код источник на GitHub.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.