Repolode
WebAssembly

WebAssembly/binaryen

wasm-optとJavaScriptビルド(binaryen.js)を備えた、WebAssembly向けのC++コンパイラ・最適化ライブラリ。

スター
8,666
フォーク
899
未解決の Issue
580
最終コミット
8 時間前

これは何?

Binaryenは、C++で実装されたWebAssembly向けのコンパイラおよびツールチェーン基盤ライブラリです。シンプルなC APIとJavaScriptインターフェースを提供し、WebAssemblyに近い形式の入力と一般的な制御フローグラフの両方を受け付けます。内部IRは、WebAssemblyへの高速なコンパイルと、最適化パスの並列実行を想定して設計されています。

最適化機能には、コードサイズの削減と実行速度の向上を目的とする多数のパスが含まれており、ローカルレジスタ割り当て、デッドコード除去、インライン化、データセグメントのパッキングなど、WebAssemblyに特化した変換に重点を置いています。メインツールのwasm-optは、wasmファイルにこれらのパスを適用します。また、wasmのアセンブルと逆アセンブル、wasm2jsによるJavaScriptへの変換、モジュールのマージ、テストケースの縮小、wasmのインタープリター実行などを行う関連ツールも用意されています。

Emscripten、wasm-pack、Kotlin/Wasm、DartのFlutter webビルドなど、複数のツールチェーンがBinaryenをコンポーネントとして利用しています。また、AssemblyScriptやGrainからライブラリとして利用されています。

主な機能

  • 01コードサイズの削減と実行速度の向上を目的とする、WebAssemblyに特化した多数の最適化パス
  • 02wasmファイルの最適化と変換を行うコマンドラインツールwasm-opt
  • 03WebAssemblyをES6 JavaScriptモジュールに変換するコンパイラwasm2js
  • 04コードからモジュールを構築・最適化するためのシンプルなC APIとbinaryen.js
  • 05wasmファイルのバンドル、不要部分の除去、縮小に使えるwasm-merge、wasm-metadce、wasm-reduce

ユースケース

  • C、C++、Rust、Kotlinのツールチェーンが生成するWebAssembly出力を小さくし、高速化する
  • ネイティブのwasmに対応していない環境向けにWebAssemblyをJavaScriptへコンパイルする
  • リリース前に複数のwasmモジュールを1つのファイルにまとめる
  • JavaScriptまたはCからプログラムでWebAssemblyモジュールを構築する

使う前に知っておきたいこと

  • デフォルトのテキスト出力は、常に有効なWebAssemblyテキスト形式とは限りません。有効なテキストを出力するには、--generate-stack-ir --print-stack-ir を使用してください。

トピック

よくある質問

binaryen とは?
wasm-optとJavaScriptビルド(binaryen.js)を備えた、WebAssembly向けのC++コンパイラ・最適化ライブラリ。 Binaryenは、C++で実装されたWebAssembly向けのコンパイラおよびツールチェーン基盤ライブラリです。シンプルなC APIとJavaScriptインターフェースを提供し、WebAssemblyに近い形式の入力と一般的な制御フローグラフの両方を受け付けます。内部IRは、WebAssemblyへの高速なコンパイルと、最適化パスの並列実行を想定して設計されています。
binaryen は無料で使えますか?ライセンスは?
binaryen は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
binaryen は今もメンテナンスされていますか?
活発にメンテナンス中。binaryen の最終コミットは 2026年10月21日 です。
binaryen は何に使えますか?
C、C++、Rust、Kotlinのツールチェーンが生成するWebAssembly出力を小さくし、高速化する ネイティブのwasmに対応していない環境向けにWebAssemblyをJavaScriptへコンパイルする リリース前に複数のwasmモジュールを1つのファイルにまとめる JavaScriptまたはCからプログラムでWebAssemblyモジュールを構築する
binaryen はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/WebAssembly/binaryen

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト