Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Scala to WebAssembly: How and Why Scala わいわい勉強会 #2 tanishiking
Slide 2
Slide 2 text
What is WebAssembly (Wasm)? - ブラウザで実行可能な、高速・安全・ポータブルで、 サイズとロードが高効率なプログラム形式 - 最近は WASI (WebAssembly System Interface) によりブラウ ザ外でも活躍 - 様々な言語から Wasm へコンパイル可能 - C/C++, Rust, Go, Kotlin, Dart, Swift, OCaml, Haskell, etc…
Slide 3
Slide 3 text
Scala -> Wasm へコンパイラバックエンド開発中 https://github.com/scala-js/scala-js/issues/4928
Slide 4
Slide 4 text
Why Wasm is important for Scala? ブラウザでScalaを実行するだけなら Scala.js があるじゃん? ● 高効率なロードと実行・安全性 ● (将来的に) ブラウザ外での活用 ○ Cloud computing (Spin, kruslet) ○ Edge computing (Cloudflare Workers, fastly edge) ○ Plugin systems (Istio plugin, shopify function) ○ Smart Contract (Ethereum Wasm, Near Protocol) ● Wasm Component で他言語との interop
Slide 5
Slide 5 text
https://www.youtube.com/watch?v=QsOHofFJpig 実はかなり前から検討はされていた (2019/06)
Slide 6
Slide 6 text
Lack of Garbage Collection JVMと違ってWasm(Engine)にGCはない(なかった) GC言語をWasmにポートするには ● VM自体をWasmに変換してその上でプログラムを実行 ○ Ruby, Python, JS (QuickJS), Java (CheerPJ) ○ VMを含んでいるので Wasm module が巨大 ● GCコードをWasm moduleに組み込む ○ Swift, Java(TeaVM), AssemblyScript, Go(?) ○ (実装によるが)非効率・is GC portable?・ホスト環境(JSなど)を介した参 照をトラックできない
Slide 7
Slide 7 text
WasmGC WebAssembly に GC managed なデータ構造を導入する proposal。Wasm EngineがGC管理してくれる V8, SpiderMonkey, JavaScriptCore(未リリース?) などで実。 wasmtime などの pure WASI runtime も実装中 Kotlin, Dart OCaml, Java(j2cl)
Slide 8
Slide 8 text
Demo (時間あれば)
Slide 9
Slide 9 text
将来の展望 ● まずはブラウザで動くWasmに変換を目指す ○ Scala.js の標準ライブラリは JS 資産利用のまま ● (pure) WASI サポート ○ そもそも pure Wasm runtime がまだ WasmGC 未対応 ○ Scala の標準ライブラリもWASIスタックの上で再実装 ○ 各種 third party library も WASI 向けに再実装する必要がある... ■ 直接 WASI利用しなければそれほど難しくないはず...(?)
Slide 10
Slide 10 text
参考 ● A new way to bring garbage collected programming languages efficiently to WebAssembly ● Scala.js and WebAssembly, a tale of the dangers of the sea - Sébastien Doeraene ● n月刊ラムダノート Vol.4