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
WASI 0.2のinit処理
Search
asuka
February 28, 2025
Technology
1
99
WASI 0.2のinit処理
新宿御苑.wasm #2025.2.28
https://shinjukugyoen.connpass.com/event/342134/
asuka
February 28, 2025
Tweet
Share
More Decks by asuka
See All by asuka
Wasmで社内ツールを作って配布しよう
askua
0
180
Wasm元年
askua
0
190
wstdなんだか良さそう
askua
0
59
Dartでウェブ開発 (やりたい)
askua
0
55
Denoでパッケージを作りJSRに公開する
askua
0
37
TSのコードをRustで書き直した話
askua
4
1.1k
久しぶりに自作ライブラリをリファクタした話
askua
0
110
今年の振り返り
askua
0
92
Wasmってなに_ 新宿御苑.wasm #2024.12.11
askua
1
360
Other Decks in Technology
See All in Technology
Amazon Bedrock AgentCoreのフロントエンドを探す旅 (Next.js編)
kmiya84377
1
120
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
260
VLMサービスを用いた請求書データ化検証 / SaaSxML_Session_1
sansan_randd
0
220
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
430
リリース2ヶ月で収益化した話
kent_code3
1
190
Rubyの国のPerlMonger
anatofuz
3
730
LIFF CLIとngrokを使ったLIFF/LINEミニアプリのお手軽実機確認
diggymo
0
230
Mambaで物体検出 完全に理解した
shirarei24
2
210
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
110
AI関数が早くなったので試してみよう
kumakura
0
120
2時間で300+テーブルをデータ基盤に連携するためのAI活用 / FukuokaDataEngineer
sansan_randd
0
130
Lambda management with ecspresso and Terraform
ijin
2
140
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.7k
Making Projects Easy
brettharned
117
6.3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
2.9k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
How to Ace a Technical Interview
jacobian
278
23k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Transcript
WASI 0.2のinit処理 新宿御苑.wasm #2025.2.28
前提の話 2 • WASI → WebAssembly System Interface • WASI
0.1 (プレビュー1) ◦ コマンドとリアクター (ライブラリ)の2つのモジュール • WASI 0.2 (プレビュー2) ◦ 機能ごとのコンポーネント WASIに関する情報がまとまってます
WASI 0.1 (プレビュー1) • コマンドモジュール ◦ プログラムを実行するためのモジュール ◦ エントリポイント :
_start • リアクターモジュール ◦ コマンドモジュールが利用する (ライブラリ)モジュール ◦ エントリポイント : _initialize 3 ランタイム (wasmtime) コマンドモジュール cli.wasm リアクターモジュール lib.wasm $ wasmtime run --preload lib=./lib.wasm cli.wasm _start = main関数 (ランタイムが実行する ) _initialize = init関数 (ランタイムが実行する ) 利用
ランタイム (wasmtime) WASI 0.2 (プレビュー2) • コンポーネントモデルをベースにAPIを再定義 ◦ wasi:cli プログラムのエントリーポイントの定義
◦ wasi:filesystem ファイル操作に関するコンポーネント ◦ wasi:clocks 時刻に関するコンポーネント ◦ wasi:random 乱数に関するコンポーネント ◦ wasi:http HTTPサーバーのエントリーポイントの定義 4 コンポーネント wasi:cli コンポーネント wasi:filesystem 利用 run = main関数 incoming-handler ≒http.Handler (Go)
そういえば... WASI 0.2の仕様には コンポーネントの初期化に関する説明がない 5
• コンポーネントモデル をベースにAPIを再定義 ◦ WASI 0.2以降の仕様 : https://wa.dev/wasi WASI 0.2
(プレビュー2) 6 コンポーネントモデルではWasmのABIについて定義されている 初期化の情報はコンポーネントモデルにあるはず
コンポーネント import コンポーネントモデルの初期化処理 • コンポーネント内でモジュールを実行用のインスタンスに変換する時にWasmの start関数が実行される 7 モジュールB (start $func)
モジュールA (start $func) インスタンスA インスタンスB start関数を実行 start関数を実行 実行 Wasmに元々ある機能 (module (func $start) (start $start) ) モジュールのwat例
コンポーネント import コンポーネントモデルの初期化処理 • コンポーネント内でモジュールを実行用のインスタンスに変換する時にWasmの start関数が実行される 8 モジュールB (start $func)
モジュールA (start $func) インスタンスA インスタンスB start関数を実行 start関数を実行 実行 1. 複数のモジュールを内包できる 2. インスタンス化の方法を定義できる (component (core module $ModA (start $start)) (core module $ModB (start $start)) (core instance $mod_a (instantiate $ModA)) (core instance $mod_b (instantiate $ModB (with "mod_a" (instance $mod_a)))) ) コンポーネントのwat例
WASI 0.1ではなぜ_initialize関数を用意したのか • start関数は元々Wasmにある機能 おそらく... モジュールを合成しようとした時の名前の衝突が原因 9 a.c b.c a.o
b.o command.wasm compile どのstart関数を採用して良いかわからない 1つのモジュールにstart関数は1つだけ コンポーネント モジュールB モジュールA インスタンスA インスタンスB コンポーネントモデルは内部で モジュールが独立している (知っている人いたら教えて )
WASIの初期化処理 • WASI 0.1では_initialize関数が用意されていた • WASI 0.2ではコンポーネント内に個別のモジュールを持つことができる ◦ → Wasmのstart関数を利用して初期化を行う
10
WHOAMI asuka • 株式会社モニクル/SWE ◦ 技術書典17: Monicle Techbook vol.1 •
Wasm関連の同人誌・商業誌を執筆 ◦ ご注文はWASIですか?? ◦ Wasm Cookbook vol.2 ◦ 実践入門WebAssembly ◦ WebAssembly System Interface入門 • 技術書典18 (NEXT) ◦ Wasm Cookbook vol.3予定 ◦ (合同誌なので参加したい人募集してます ) 11 書いた本など
参考文献 • lldでwasmをリンクするまで - Qiita • 手書きで理解するWebAssembly Component Model |
株式会社ヌーラボ(Nulab inc.) • component-model/design/mvp/Explainer.md at main 12