WebAssemblyをサポートする言語
WebAssemblyをサポートする言語
どっかの記事に「すでに30言語ぐらいある」って書いてたなmrsekut.icon
LLVMで実装された言語は基本いける、それ以外の言語はそれ用の処理系が開発されればいける
という認識でいいのかな?mrsekut.icon
大きく分けると2種類ある ref
WebAssemblyをターゲットしたコンパイルを行う方法
WebAssemblyに出力されたインタプリタを使って、他の言語のプログラムを動かす方法
WebPerl, Lua VM
生成方法による分類
Rust, Go, Kotlin/Native
内部のコンパイラで生成可能
C, C++, Swift, Nim, Haskell
Emscriptenを使う
外部の機構を用いる
C#, Python, PHP, TypeScript
言語ごとに見る
C, C++
emscriptenを使う
Rust
rustcでWebAssemblyにコンパイルできる
yewというRustでクライアントコードを書いてWebAssemblyに変換して実行するフレームワークもある
https://nulab.com/ja/blog/nulab/rust-yew-webassembly-kanban-app/
asm.js
binaryenでコンパイル
C#
mono-wasmを用いる
UnityならWebGLとして出力することでWebAssemblyを生成できる
Blazorというのもある ref
MSの実験的プロダクト
BlazorでWebAssembly
https://www.telerik.com/blogs/webassembly-ifying-net-with-blazor
https://qiita.com/Nossa/items/f0e2fc1c91d8cb95ead4
Swift
LLVMを使った言語はemscriptenで生成可能
Go
https://github.com/golang/go/issues/18892
v1.11からサポートされた (2018/8)
DOM操作や、JavaScriptAPIが使える
https://tutorialedge.net/golang/go-webassembly-tutorial/
https://speakerdeck.com/syumai/web-frontend-development-using-go-and-webassembly
Kotlin/Native
https://www.publickey1.jp/blog/18/kotlinnativekotlin_13winmaciosandroidwebassemblykotlinconf_2018.html
TypeScript
AssemblyScript
Python
Pyodide
PHP
php-ext-wasm
Haskell
asterius
https://haskell.jp/blog/posts/2019/asterius.html
https://tweag.github.io/asterius/webassembly/
https://www.tweag.io/posts/2018-12-20-asterius-todomvc.html
Nim
Emscriptenを使う
https://www.spiria.com/en/blog/web-applications/webassembly-nim/
Elm
https://dev.to/skinney/exploring-how-elm-can-target-web-assembly-2050