Emscripten 3.0、LLVMを使用したWebAssemblyのビルドツールチェーン

最近 Emscripten3.0コンパイラの新しいバージョンのリリースが発表されましたは、低レベルのユニバーサルミドルウェアWebAssemblyで、コードをC / C ++およびLLVMベースのフロントエンドが利用可能な他の言語でコンパイルできるようにすることを特徴としています。

このコンパイルを行う主な機能は、JavaScriptプロジェクトとのその後の統合であり、Webブラウザーで実行され、Nodeで使用されます。 Jsまたはwasmランタイムで実行されるクロスプラットフォームのスタンドアロンアプリケーションを作成します。

Emscriptenについて

主な目標 Emscriptenプロジェクトの開発 Web上でコードを実行できるツールを作成することです。 それが書かれているプログラミング言語に関係なく。

コンパイルされたアプリケーションは、標準のCおよびC ++ライブラリ呼び出しを使用できます (libc、libcxx)、C ++拡張機能、pthreadsベースのマルチスレッド、POSIX API、および多くのマルチメディアライブラリ。 WebAPIおよびJavaScriptコードと統合するためのAPIは個別に提供されます。

サインアップ Canvasを介したSDL2ライブラリ出力のストリーミングをサポート、およびWebGLを介したOpenGLおよびEGLサポートも提供し、グラフィックアプリケーションおよびゲームをWebAssemblyに変換できるようにします。

事実上、移植可能な C または C++ コードベースは、Emscripten を使用して WebAssembly にコンパイルできます。グラフィックのレンダリング、サウンドの再生、ファイルのロードと処理を必要とする高性能ゲームから、Qtのようなアプリケーションフレームワークまで。 Emscriptenは、Unreal Engine4やUnityEngineなどの商用コードベースを含む、非常に長い実世界のコードベースのリストをWebAssemblyに変換するためにすでに使用されています。

C / C ++コードのコンパイルに加えて、プロジェクトは個別に開発され、Lua、C#、Python、Ruby、およびPerlのインタープリターと仮想マシンがブラウザーで起動するようにします。 Swift、Rust、D、Fortranなどの言語で利用可能なLLVMに非Clangインターフェースを適用することも可能です。

それは注意する必要があります ネイティブランタイムとEmscriptenには違いがあります。 つまり、一般的に、eネイティブコードにいくつかの変更を加える必要があります。 とは言うものの、多くのアプリケーションは、メインループの定義方法を変更し、ブラウザ/ JavaScriptの制限に対応するためにファイル処理を変更するだけで済みます。

一部のコードの移行を容易にする制限もあります。移植性ガイドラインを読んで、より多くの労力を費やす必要がある場所を判断してください。

Emscripten3.0の主な新機能

提示されているこの新しいバージョンでは、emscriptenで使用されているmusl Cライブラリがバージョン1.2.2に更新されています(バージョン1.1.15はEmscripten 2.xブランチで使用されていました)。

parseTools.jsライブラリから、主にプロジェクトで使用される関数の一部が削除されました。 removePointing、pointingLevels、removeAllPointing、isVoidType、isStructPointerType、isArrayType、isStructType、isVectorType、isStructuralType getStructuralTypeParts、getStructuralType _IntToHex、IEEEUnHex、Compiletime.isPointerType、Compiletime.EStructileType、。

つつ shell.htmlおよびshell_minimal.htmlテンプレートでは、エラーメッセージの出力 emscripten操作中に発生し、stderrを介してアプリケーションによって発行されます デフォルトでは、console.errorの代わりにconsole.warnを使用するように変更されています。

また、 ファイル名で使用される特定のテキストエンコーディングを指定する機能が追加されました。 エンコーディングは、ファイル名を渡すときにサフィックスとして指定できます(例:「a.rsp.utf-8」または「a.rsp.cp1251」)。

最後に、Emscriptenについて詳しく知りたい場合は、プロジェクトの詳細を参照してください。 公式サイト。

同様に、Emscriptenの使用方法については、Web上のドキュメントを参照できます。推奨できるリファレンスサイトは、Mozilla開発者のWebサイトです。 https://developer.mozilla.org.

また、プロジェクトコードはMITライセンスの下で配布されていることに言及することが重要です。 コンパイラーはLLVMプロジェクトからの開発を使用し、BinaryenライブラリーはWebAssemblyと最適化を生成するために使用されます。 あなたはあなたのコードをチェックすることができます GitHubのソース。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。