2026年7月12日日曜日

WebAssembly 3.0

 公式サイト・公式ドキュメント優先で一覧にします。現在の共通仕様は WebAssembly 3.0 です。

WebAssembly共通仕様

WASI・Component Model

WITは、Component Modelのインターフェースやworldを定義するIDLです。


C / C++

Emscripten

EmscriptenはLLVMを利用し、C/C++をブラウザ、Node.js、Wasmランタイム向けにコンパイルする総合ツールチェーンです。

Clang / LLVM


Rust

wasm-bindgenはRustとJavaScript間の高水準な型変換・関数接続を担当します。


Zig

Zigでは主に次のターゲットを使います。

wasm32-freestanding
wasm32-wasi
wasm64-freestanding
wasm64-wasi

現状、WebAssembly専用の独立した公式入門ページは少なめで、言語リファレンスとターゲット指定を参照する形です。


AssemblyScript

AssemblyScriptはTypeScriptそのものではなく、Wasmを直接ターゲットにしたTypeScript風言語です。


Go

ブラウザ向け:

GOOS=js GOARCH=wasm go build

WASI向け:

GOOS=wasip1 GOARCH=wasm go build

Go 1.24では、WASI向け関数exportなどWasm連携機能が追加されています。

TinyGo

Go標準より小さなWasmを作りたい場合はこちらです。


C# / .NET / Blazor

Blazor WebAssemblyはブラウザ内で.NETランタイムとC#アプリケーションを実行でき、AOTコンパイルにも対応しています。


Kotlin

Kotlin/Wasmには、ブラウザ向けのwasm-jsとWASI向けのターゲットがあります。


Swift

Swift公式には、ブラウザ向けとWASIランタイム向けのWebAssembly SDK手順があります。


Python

Pyodide

PyodideはCPythonとPythonパッケージ群をWasm化し、ブラウザやNode.jsで実行する仕組みです。

CPython本体


Java

TeaVM

TeaVMはJavaバイトコードを入力にして、JavaScriptまたはWebAssemblyへAOTコンパイルします。KotlinやScalaのクラスファイルも入力可能です。

CheerpJ


実行ランタイム

Wasmtime

WasmEdge

Wasmer

WAMR

組み込み機器やマイコンでは重要です。

wasm3

小型インタプリタです。

Wazero

Goだけで実装されたWasmランタイムです。


言語名称正体単体/複合
Rustrustcコンパイラ単体
Rustwasm-bindgenJS相互運用ライブラリ+CLI複合寄り
Rustwasm-packビルド・パッケージ化CLI単体
Rustweb-sysWeb APIバインディング単体
Rustjs-sysJS標準APIバインディング単体
C/C++Emscriptenコンパイラツールチェーン複合
CemccC向けコンパイラドライバー構成要素
C++em++C++向けコンパイラドライバー構成要素
AssemblyScriptAssemblyScript言語・ランタイム・ツール群複合
AssemblyScriptascコンパイラCLI単体
Gojs/wasmブラウザ向けターゲット名称
Gowasip1/wasmWASI向けターゲット名称
Gosyscall/jsJS相互運用パッケージ単体
TinyGoTinyGoGo用別コンパイラツールチェーン複合
TinyGowasmブラウザ向けターゲット名称
TinyGowasip1 / wasip2WASI向けターゲット名称
ZigZig言語・コンパイラ・ビルドツール複合
Zigwasm32-freestandingターゲット指定名称
KotlinKotlin/WasmKotlinのWasmバックエンド構成要素
KotlinwasmJsブラウザ向けGradleターゲット名称
KotlinwasmWasiWASI向けGradleターゲット名称
KotlinCompose MultiplatformUIフレームワーク複合
.NETBlazor WebAssemblyWebアプリフレームワーク複合
.NET.NET WebAssembly runtime.NETランタイム構成要素
.NETInteractive WebAssemblyレンダーモード名称
.NETWebAssembly AOTコンパイル方式名称
PythonPyodidePython/Wasmディストリビューション複合
PythonCPythonPython処理系複合
Rubyruby.wasmCRubyのWasm移植群複合
RubyCRubyRuby処理系複合
SwiftSwift SDKs for WebAssembly公式Wasm SDK複合
SwiftSwift for WebAssembly分野・対応全体の名称名称
SwiftSwiftWasmコミュニティプロジェクト複合
SwiftJavaScriptKitJS相互運用ライブラリ単体