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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
asuka
February 28, 2025
Technology
1
180
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
2025年ふりかえり
askua
1
100
ライブラリを公開してメンテナンスした一年
askua
0
66
Wasmの気になる最新情報
askua
0
310
Wasmのエコシステムを使った ツール作成方法
askua
0
340
Pure Goで体験するWasmの未来
askua
1
810
Wasmで社内ツールを作って配布しよう
askua
0
260
Wasm元年
askua
0
290
wstdなんだか良さそう
askua
0
110
Dartでウェブ開発 (やりたい)
askua
0
75
Other Decks in Technology
See All in Technology
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
1
2.9k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
450
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
670
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
Agile Leadership Summit Keynote 2026
m_seki
1
650
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
980
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.5k
Red Hat OpenStack Services on OpenShift
tamemiya
0
120
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
160
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
170
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
97
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
86
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Optimizing for Happiness
mojombo
379
71k
The browser strikes back
jonoalderson
0
390
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