Suche senden
Hochladen
WebAssemblyのWeb以外のことぜんぶ話す
•
18 gefällt mir
•
28,299 views
Takaya Saeki
Folgen
Kernel/Vm探検隊 online part2. 発表動画: https://youtu.be/brrm328XItM?t=8221
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 37
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Empfohlen
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Naito Oshima
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
axsh co., LTD.
Weitere ähnliche Inhalte
Was ist angesagt?
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
Was ist angesagt?
(20)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Docker Compose 徹底解説
Docker Compose 徹底解説
DockerとPodmanの比較
DockerとPodmanの比較
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
分散システムについて語らせてくれ
分散システムについて語らせてくれ
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
Jenkins 再入門
Jenkins 再入門
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Pythonによる黒魔術入門
Pythonによる黒魔術入門
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Ähnlich wie WebAssemblyのWeb以外のことぜんぶ話す
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Naito Oshima
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
axsh co., LTD.
OSvのご紹介 in Java 8 HotSpot meeting
OSvのご紹介 in Java 8 HotSpot meeting
Takuya ASADA
Google Compute EngineとPipe API
Google Compute EngineとPipe API
maruyama097
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
maruyama097
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
Tsuyoshi Torii
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
20060419
20060419
小野 修司
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
OSvの概要と実装
OSvの概要と実装
Takuya ASADA
20140803 docker
20140803 docker
Yasuyuki SAITO
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
Kuniyasu Suzaki
インフラエンジニアなら知っておきたいストレージのはなし2012/Spring ストレージの基礎おさらい編
インフラエンジニアなら知っておきたいストレージのはなし2012/Spring ストレージの基礎おさらい編
Satoshi Shimazaki
VIOPS03: VMware参考資料
VIOPS03: VMware参考資料
VIOPS Virtualized Infrastructure Operators group ARCHIVES
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭り
Shinichi Tomita
Vagrant入門以前
Vagrant入門以前
katanyan
勉強会0614 vagrant
勉強会0614 vagrant
Yu Ito
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
真吾 吉田
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
Takashi Makino
Ähnlich wie WebAssemblyのWeb以外のことぜんぶ話す
(20)
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
OSvのご紹介 in Java 8 HotSpot meeting
OSvのご紹介 in Java 8 HotSpot meeting
Google Compute EngineとPipe API
Google Compute EngineとPipe API
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
20060419
20060419
Jjug springセッション
Jjug springセッション
OSvの概要と実装
OSvの概要と実装
20140803 docker
20140803 docker
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
インフラエンジニアなら知っておきたいストレージのはなし2012/Spring ストレージの基礎おさらい編
インフラエンジニアなら知っておきたいストレージのはなし2012/Spring ストレージの基礎おさらい編
VIOPS03: VMware参考資料
VIOPS03: VMware参考資料
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭り
Vagrant入門以前
Vagrant入門以前
勉強会0614 vagrant
勉強会0614 vagrant
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
Mehr von Takaya Saeki
Ss systemdのwslディストロを作る kernelvm探検隊online part 3
Ss systemdのwslディストロを作る kernelvm探検隊online part 3
Takaya Saeki
Noah - Robust and Flexible Operating System Compatibility Architecture - Cont...
Noah - Robust and Flexible Operating System Compatibility Architecture - Cont...
Takaya Saeki
Introduction to arm virtualization
Introduction to arm virtualization
Takaya Saeki
カーネル空間ですべてのプロセスを動かすには -TAL, SFI, Wasmとか - カーネル/VM探検隊15
カーネル空間ですべてのプロセスを動かすには -TAL, SFI, Wasmとか - カーネル/VM探検隊15
Takaya Saeki
Kernel / VM 関西9 - WSL FUSE: WSLでもFUSEしたかった
Kernel / VM 関西9 - WSL FUSE: WSLでもFUSEしたかった
Takaya Saeki
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
Takaya Saeki
Mehr von Takaya Saeki
(6)
Ss systemdのwslディストロを作る kernelvm探検隊online part 3
Ss systemdのwslディストロを作る kernelvm探検隊online part 3
Noah - Robust and Flexible Operating System Compatibility Architecture - Cont...
Noah - Robust and Flexible Operating System Compatibility Architecture - Cont...
Introduction to arm virtualization
Introduction to arm virtualization
カーネル空間ですべてのプロセスを動かすには -TAL, SFI, Wasmとか - カーネル/VM探検隊15
カーネル空間ですべてのプロセスを動かすには -TAL, SFI, Wasmとか - カーネル/VM探検隊15
Kernel / VM 関西9 - WSL FUSE: WSLでもFUSEしたかった
Kernel / VM 関西9 - WSL FUSE: WSLでもFUSEしたかった
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
Kürzlich hochgeladen
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Kürzlich hochgeladen
(10)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
WebAssemblyのWeb以外のことぜんぶ話す
1.
WebAssemblyの Web以外のことぜんぶ話す Takaya Saeki (@nullpo_head) Kernel/VM勉強会
online part 2
2.
WebAssemblyと は?(一般的なやつ ウェブブラウザのクライアントサイドスク リプトとして動作する低水準言語である。 ブラウザ上でバイナリフォーマットの形で 実行可能であることを特徴とする [Wikipediaより] 応用例色々 - Web:
Google Meet, Figma, AutoDesk - ゲーム
3.
今日はそういう話はしません
4.
今日のFocus: Web外Wasm ~Kernel/VM的wasm入門~
5.
Web外wasmってやつがあります • Wasmer • Wasmをネイティブで動かすランタイム
(Emscripten, WASI) • Envoy • パケットやHTTPリクエストの許諾や改変をwasmプラグインで書ける • Krustlet • Kubernetes上でwasmコンテナを実現する • Kernel-wasm • Linuxカーネル内でコンテキストスイッチ無しでWasmバイナリを動かす • Nabulet • Wasmでmicrokernelを高速に実現する => 一発ギャグではない! アツいフロンティアがある
6.
WasmのWeb以外のこと全部話す 今日全部話すこと 1. Web外Wasmがなぜアツいのか 2. WasmがWebの外でどう使われているか 3.
Web外Wasmのエコシステム 今日話さないこと 1. WasmのメインフィールドであるWebについて 2. Wasmの詳細な基本仕様について
7.
何がwasmを そんなにアツくさせるのか
8.
Wasmがなぜアツいのか • Wasmが夢見る世界は複合的な側面をもつ + Javaが目指したもの
(portable executable) + CLIが目指したもの (common language bytecode VM) + NaClが目指したもの/eBPF (secure/isolated sandbox) + Lua (embeddable runtime) =>WasmのことをJVM againやeBPF againだと理解すると、 ほかの側面のアツさを見逃す
9.
Wasmをアツくする特徴 Fast, safe, and portable
semantics: • Fast • Safe • Well-defined • Hardware-independent • Language-independent • Platform-independent • Open Efficient and portable representation: • Compact • Modular • Efficient • Streamable • Parallelizable • Portable
10.
Wasmをアツくする特徴 • Safe Untrustedなコードを安全に動かすことができる (like
eBPF, NaCl) • JVMでは厳しい • Language-Independent 低レベルな言語を含め、言語を選ばない (like NaCl. CLIもやや実現 • JVM/eBPFでは現実的には厳しい • Portable/Platform-Independent 環境/OSを選ばない (like JVM • NaClでは厳しい • Open ホスト環境とのAPIインターフェースがオープンである (like Lua, NaCl • 今まで決定的な選択肢が存在しなかった Design Goalsの13個のGoalsから、注目する4つを抜粋
11.
Wasmがなぜアツいのか(改 • Wasmが目指す世界は複合的な側面をもつ + Javaが目指したもの
(Portable/Platform-Independent) + CLIが目指したもの (Language-Independent) + NaClが目指したもの/eBPF (Safe) + Lua (Open) =>WasmのことをJVM againやeBPF againだと理解すると、 ほかの側面のアツさを見逃す =>しかもそれぞれの需要のための投資が集中するからエコシス テムの発展が速いのも魅力
12.
4つの特徴から見る言語仕様
13.
Wasmの基礎言語仕様: 1. Language /
2. Platform Independent • 低レベルなスタックマシンのバイナリバイトコード • JVMやCLIとは違い、GCもオブジェクトのようなOOPの概念もない • ハーバードアーキテクチャ • 基本VMランタイムで動く • 言語仕様が小さいのでコンパイルも可能 様々なコンパイラが第1ターゲットとしてサポートできる (Like: NaCl / Unlike: JVM (Graal含む)) ホストアーキテクチャに依存しない (Like: JVM / Unlike: NaCl)
14.
Wasmの基礎言語仕様: 3. Safe • ホストランタイムから隔離された単一メモリ空間を持つ •
そしてハーバードアーキテクチャである • デフォルトでは外界に副作用を行えない • Structuredな言語構造しかない (block, loop… • ジャンプや条件付ジャンプ、CallなどはBasic Blockにしか飛べない • ローカル変数の存在 • CallスタックはVMが管理するのでVM上はControl Flow Integrityがある • VMの上の言語レベルでCFIがあるかどうかは話は別だけど.. • 構造化プログラミング以後のアセンブリ言語だとでも思ってください UntrustedなコードをWasm VM上/AOTで動かすことができる (Like: NaCl, eBPF / Unlike: JVM) 参考資料:カーネル空間ですべてのプロセスを動かすには -TAL, SFI, Wasmとか - カーネル/VM探検隊15 (slideshare.net)
15.
Wasmの基礎言語仕様: 4. Open Wasmはオブジェクトファイ ルフォーマットの仕様を含む • webでもなければアセンブリでも なければ言語仕様でもない・・・? •
ホストにImport/Exportする 関数/変数etcの定義がある • しかし、具体的中身については 仕様では定めない(重要) • 最も一般的なのはJSとのglue • 似たものはあまりないが、 Luaが活躍しているフィールド Chapter 2. A look inside WebAssembly modules - WebAssembly in Action: With examples using C++ and Emscripten (manning.com) Portable, L.I., Safeな上で、 さらにOpenであることが Wasmに多様な応用を生む!
16.
Wasm Embedding Interfaces Wasmはオブジェクトフォーマット. ELFが実際何をできるかはPOSIX/Linux/BSDが決めるように、 Wasmが何ができるかは外のInterfaceが決める •
Web / JS • WASI • Proxy-Wasm • その他面白インターフェース • In-kernel • Ethereum • TEE • などなど
17.
だからWasmは既存技術の リバイバル「ではない」!
18.
Wasmがwebの外で どう使われてるか 特にWASIとProxy-Wasmついて
19.
WASI • OSの上でwasm executableを動か すためのPortableなAPI
/ ABI • POSIXと同じか少し下のレイヤ • Safe/Portableさを利用している • 有名かつ直感的なEmbedding Interface • Bytecode Allianceによってコミュニ ティベースで仕様がメンテされてる • Mozilla, Fastly, Intel, Redhat…
20.
WAI APIの例 • FS,
processなどのインターフェースを定義 • ここにAPIがドドーンとある:WASI/docs.md at main · WebAssembly/WASI (github.com) Standardizing WASI: A system interface to run WebAssembly outside the web - Mozilla Hacks - the Web developer blog
21.
WASI セキュリティ • 独自のセキュリティ機構をもつ(予定) •
WasmはSafeでIsolated! …本当? 語弊がある. ホストが提供するAPI (systemcall)の安全性に依存する • Capability Baseのセキュリティ機構 • 例えばFSのアクセスはディレクトリごとにcapabilityを 取得する必要がある • 多くのMicrokernelを想起させる機構 • まだまだ策定中 • イメージとしては、スマホアプリのようなセキュリティモデルが 実現できるようになる(かも) • ネイティブみたいにSeccompでガチガチに固めたりしなくていい WASIはPortableな実行ランタイムであり、 しかもセキュリティ的にexecutableとしても先進性がある
22.
Proxy-wasm WebAssembly for Proxies •
Portable/Safe/Openさを利用 • Envoyがリファレンス実装 • Nginxなども試験実装がある • L4/L7 リクエスト/レスポンスを 自由にこねくり回すロジックをWasmが 発行するためのEmbedding Interface • Envoyまわりの人たちが中心のコミュニティ 主導でメンテされている • Google, Tetrate…
23.
どういうこと? • パケットやHTTP通信が 来た時に呼ばれる関数をWasm 側からexport • EnvoyなどのProxyは通信が発生 したさいにその関数を 呼ぶ •
Wasm側はそこでさらに、 Proxy側が定義したAPIを読んで ログを書きだすなりレスポンス を返すなりする Wasmのランタイムとの 双方向のインターフェースに よって実現
24.
Proxy-wasmはなぜうれしい? • Envoyで言えば、同じ仕組みを前からC++ static
libraryを プラグインとして差し込むことで実現できた • 比較してwasmの利点 • Safe • Untrustedなコードを実行できる • Wasm側がクラッシュしてもProxy側に影響がない • Portable • アーキテクチャ/CPU非依存に実現できる • Language Independent • C++だけでなく、RustやGoでproxy pluginを実装できる これはかなり便利な一般化できる話. 現在だとLuaのフィールド
25.
Proxy-wasmのモチベーションの 一般化が教えてくれること • 一般に、双方向のAPI(hostcall/guestcall)が欲しくて、 Safeでportable, そしてfastに動いてほしい場所にwasmが適用可能 •
In-kernel executable • Ethereum • 一般のプラグイン機構 • みなさんもこれWasmでもっとうまくやれるんじゃね?というユー スケースを考えよう! • 特定の組み込み言語を使っている • 特定の言語向けにしかAPIがない • 双方向のAPIを必要とする • APIを用意してあげたいがIPCのコストは許容できない • 例えばVimのようなエディタ, ETL..?
26.
プロプライエタリプロダクトの 有名なWasm組み込み事例 CDN • CDNのエッジでパケット操作のロジックを書くために利用する • FastlyのLucet •
VCLの流れ • CloudFlare • Proxy-wasmとまったく同じモチベーション. というかFastlyが多分元祖.
27.
Proxy-wasm WebAssembly for Proxies •
Portable/Safe/Openさを利用 • Envoyがリファレンス実装 • Nginxなども試験実装がある • L4/L7 リクエスト/レスポンスを 自由にこねくり回すロジックをWasmが 発行するためのEmbedding Interface • Envoyまわりの人たちが中心のコミュニティ 主導でメンテされている • Google, Tetrate…
28.
Proxy-wasm WebAssembly for Proxies •
Portable/Safe/Openさを利用 • Envoyがリファレンス実装 • Nginxなども試験実装がある • L4/L7 リクエスト/レスポンスを 自由にこねくり回すロジックをWasmが 発行するためのEmbedding Interface • Envoyまわりの人たちが中心のコミュニティ 主導でメンテされている • Google, Tetrate…
29.
Proxy-wasm WebAssembly for Proxies •
Portable/Safe/Openさを利用 • Envoyがリファレンス実装 • Nginxなども試験実装がある • L4/L7 リクエスト/レスポンスを 自由にこねくり回すロジックをWasmが 発行するためのEmbedding Interface • Envoyまわりの人たちが中心のコミュニティ 主導でメンテされている • Google, Tetrate… Tetrate
30.
宣伝(Tetrate)
31.
WASI的なモチベーションの応用 WASIのモチベーション(Safe & Portable)も一般化できる •
Krustlet • Wasm OCI Image • Wasm • FaaS • みなさんもユースケースを(略 • 特定の言語ランタイムしか受け付けないインフラ • Seccompやcgroupで実行ファイルをガチガチに固める状況
32.
Web外Wasmのエコシステム
33.
Ecosystem 今回はつぎの二つについてさらっと紹介. 名前だけでも覚えて帰ってください • Runtime • ToolChain
34.
Wasm Runtimes ※ざっと見ただけなので不正確な紹介になっている可能性があります • Wasmtime •
Bytecode alliance project • リファレンス実装的側面がある • JITネイティブコード生成バックエンドはCranelift • Wasmer • Wasmer社が開発している • バックエンドはCranelift, singlepass, LLVM • Lucet • Bycode alliance project. Fastly社由来 • CDNで使われている. AOTができる. Wasmtimeと多くのコンポーネントを共有 • WAVM • LLVMをつかってコードを生成するらしい • Wasm3 • JITをしない代わりに組み込みやすく、高速なインタプリタ • V8 • 言わずと知れたやつ. みなさんが思ってるよりは組み込みやすい ほかにもいっぱいあるはず
35.
Toolchain 多くの言語が言語ネイティブのツールチェインが バックエンドとしてwasmをサポート(そうでないものもある • 現状webassembly.orgにリストされている言語 • C/C++ •
Rust • C# • F# • Go • Kotlin • Swift • D • Pascal • Zig
36.
新しい低レイヤ Wasmはまだまだエコシステムが未熟なので、 整備中ものがたくさんある • Dynamic link •
Dwarf / Debugger • Inter-Language Type Procedure 今の時代に低レイヤの仕様が スクラッチから開発されるのを見るのは楽しい
37.
Summary • Wasmは複合的なアツさをもつ + Javaが目指したもの
(Portable/Platform-Independent) + CLIが目指したもの (Language-Independent) + NaClが目指したもの/eBPF (Safe) + Lua (Open) • 特にOpenさが多様な応用先を生む • 例えば以下のようなspecがある • WASI • Proxy-wasm • これから色々な分野で応用されていくはず • あなたも君だけのWasm Embedding Interfaceを考えよう
Jetzt herunterladen