Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
WASI 0.2のinit処理
Search
asuka
February 28, 2025
Technology
240
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WASI 0.2のinit処理
新宿御苑.wasm #2025.2.28
https://shinjukugyoen.connpass.com/event/342134/
asuka
February 28, 2025
More Decks by asuka
See All by asuka
GoとSIMDとWasmの今。
askua
3
620
2025年ふりかえり
askua
1
250
ライブラリを公開してメンテナンスした一年
askua
0
120
Wasmの気になる最新情報
askua
1
410
Wasmのエコシステムを使った ツール作成方法
askua
0
460
Pure Goで体験するWasmの未来
askua
1
1.1k
Wasmで社内ツールを作って配布しよう
askua
0
340
Wasm元年
askua
0
410
wstdなんだか良さそう
askua
0
160
Other Decks in Technology
See All in Technology
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
300
ScotSecure West 2026 - Glasgow
raybugg
0
190
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
530
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
110
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
330
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
450
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
1
610
Antigravity SDK for the Java Developer
glaforge
0
220
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
150
Goodbye ShellScript, Hello File-based App
shunsock
0
1.2k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
470
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Navigating Weather and Climate Data
rabernat
0
540
The SEO Collaboration Effect
kristinabergwall1
1
580
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
950
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
The untapped power of vector embeddings
frankvandijk
2
1.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
It's Worth the Effort
3n
188
29k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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