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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.