Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scala to WebAssembly #scala_waiwai
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Rikito Taniguchi
February 27, 2024
0
1.8k
Scala to WebAssembly #scala_waiwai
https://scala-tokyo.connpass.com/event/307069/
Rikito Taniguchi
February 27, 2024
Tweet
Share
More Decks by Rikito Taniguchi
See All by Rikito Taniguchi
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
Capture Checking / Separation Checking 入門
tanishiking
0
480
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
640
Scala meets WebAssembly
tanishiking
0
900
Why Wasm+WASI for Scala
tanishiking
0
130
Scala to WebAssembly: Exploring the How and Why
tanishiking
1
1.8k
Scala Days Madrid 2023 参加レポート
tanishiking
0
99
Tooling for Scala3
tanishiking
0
430
API-Based Code Search
tanishiking
0
96
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
130
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
The agentic SEO stack - context over prompts
schlessera
0
700
Building an army of robots
kneath
306
46k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
230
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Rails Girls Zürich Keynote
gr2m
96
14k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
290
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Everyday Curiosity
cassininazir
0
170
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
Scala to WebAssembly: How and Why Scala わいわい勉強会 #2 tanishiking
What is WebAssembly (Wasm)? - ブラウザで実行可能な、高速・安全・ポータブルで、 サイズとロードが高効率なプログラム形式 - 最近は WASI
(WebAssembly System Interface) によりブラウ ザ外でも活躍 - 様々な言語から Wasm へコンパイル可能 - C/C++, Rust, Go, Kotlin, Dart, Swift, OCaml, Haskell, etc…
Scala -> Wasm へコンパイラバックエンド開発中 https://github.com/scala-js/scala-js/issues/4928
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
https://www.youtube.com/watch?v=QsOHofFJpig 実はかなり前から検討はされていた (2019/06)
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など)を介した参 照をトラックできない
WasmGC WebAssembly に GC managed なデータ構造を導入する proposal。Wasm EngineがGC管理してくれる V8, SpiderMonkey,
JavaScriptCore(未リリース?) などで実。 wasmtime などの pure WASI runtime も実装中 Kotlin, Dart OCaml, Java(j2cl)
Demo (時間あれば)
将来の展望 • まずはブラウザで動くWasmに変換を目指す ◦ Scala.js の標準ライブラリは JS 資産利用のまま • (pure)
WASI サポート ◦ そもそも pure Wasm runtime がまだ WasmGC 未対応 ◦ Scala の標準ライブラリもWASIスタックの上で再実装 ◦ 各種 third party library も WASI 向けに再実装する必要がある... ▪ 直接 WASI利用しなければそれほど難しくないはず...(?)
参考 • 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