C/C++ から WebAssembly へのコンパイラである Emscripten 3.0 が利用可能です

Emscripten 3.0 コンパイラのリリースが公開されました。これにより、LLVM ベースのフロントエンドが利用可能な C/C++ およびその他の言語でコードをユニバーサル低レベル中間コード WebAssembly にコンパイルし、その後 JavaScript プロジェクトと統合し、実行できるようになります。 Web ブラウザーで使用し、Node.js で使用するか、wasm ランタイムを使用して実行されるスタンドアロン マルチプラットフォーム アプリケーションを作成します。 プロジェクト コードは MIT ライセンスに基づいて配布されます。 コンパイラは LLVM プロジェクトからの開発を使用し、Binaryen ライブラリは WebAssembly と最適化の生成に使用されます。

Emscripten プロジェクトの主な目標は、コードが記述されているプログラミング言語に関係なく、Web 上でコードを実行できるツールを作成することです。 コンパイルされたアプリケーションでは、標準 C および C++ ライブラリ (libc、libcxx)、C++ 拡張機能、pthread ベースのマルチスレッド、POSIX API、および多くのマルチメディア ライブラリへの呼び出しを使用できます。 Web API および JavaScript コードと統合するための API は個別に提供されます。

Emscripten は、Canvas 経由で SDL2 ライブラリの出力のブロードキャストをサポートし、WebGL 経由で OpenGL と EGL のサポートも提供します。これにより、グラフィカル アプリケーションやゲームを WebAssembly に変換できます (たとえば、Qt ツールキットのポートがあり、Unreal Engine をサポートします) 4 およびユニット ゲーム エンジン、物理的なバレット エンジン)。 C/C++ でコードをコンパイルすることに加えて、Lua、C#、Python、Ruby、Perl 言語のブラウザーでインタープリターと仮想マシンを確実に起動できるようにするプロジェクトが個別に開発されています。 Clang 以外のフロントエンドを LLVM に適用することも可能で、Swift、Rust、D、Fortran などの言語で利用できます。

Emscripten 3.0 の主な変更点:

  • emscripten で使用される musl C ライブラリがバージョン 1.2.2 に更新されました (バージョン 2 は Emscripten 1.1.15.x ブランチで使用されました)。
  • プロジェクト内で主に使用されていた関数の一部が parseTools.js ライブラリから削除されました:removePointing、pointingLevels、removeAllPointing、isVoidType、isStructPointerType、isArrayType、isStructType、isVectorType、isStructuralType getStructuralTypeParts、getStructuralTypePartBits、isFunctionDef、isPossiblyFunctionType、isFunctionType、getReturnType、 SplitTokenList、_IntToHex、IEEEUnHex、Compiletime.isPointerType、Compiletime.isStructType、Compiletime.INT_TYPES、isType。
  • shell.html およびshell_minimal.html テンプレートでは、emscripten の操作中に発生し、アプリケーションによって stderr 経由で出力されるエラー メッセージの出力は、デフォルトで console.error ではなく console.warn を使用するように切り替えられます。
  • ファイル名に使用される特定のテキストエンコーディングを指定する機能が追加されました。 エンコーディングは、ファイル名を渡すときにサフィックスの形式で指定できます (たとえば、「a.rsp.utf-8」または「a.rsp.cp1251」)。

出所: オープンネット.ru

コメントを追加します