Недавно анонсирован выпуск новой версии компилятора 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.
Будьте первым, чтобы комментировать