Slide 1

Slide 1 text

Pine Mizune Jul 29, 2016 / Kichijoji.pm #8 An introduction to WebAssembly

Slide 2

Slide 2 text

1SPGJMF o (JU)VC !QJOF o 5XJUUFS!QJOF o ޷͖ͳݴޠ +BWB4DSJQU o ࢓ࣄͰॻ͍͍ͯΔݴޠ1FSM+4 o .PCJMF'BDUPSZ *OD

Slide 3

Slide 3 text

 8FC"TTFNCMZ ͱ͸  8FC"TTFNCMZ ͷ࠷ۙͷಈ޲  8FC"TTFNCMZ ͷϝϦοτ  8FC"TTFNCMZ ͷར༻ϑϩʔ  σϞ 5BCMFPGDPOUFOUT

Slide 4

Slide 4 text

ϒϥ΢β޲͚ ࣮ߦՄೳόΠφϦϑΥʔϚοτ • +BWB4DSJQUͷ୅ସͰ͸ͳ͍ • --7.ܥݴޠ͔ΒίϯύΠϧՄೳ • $ISPNF'JSFGPY /JHIUMZ Ͱ࣮૷ࡁΈ 8FC"TTFNCMZͱ͸ C/C++/Rust WebAssembly LLVM compiler

Slide 5

Slide 5 text

C/C++/Rust WebAssembly Compiler 94࢖͑͹$$ Ͱڞ௨Մೳ • [MJCD ͳͲ΋ಈ͘Α Perl / XS 1FSMͱ૊Έ߹Θͤͯ࢖͏ͳΒ

Slide 6

Slide 6 text

n $ISPNFɺ8FC,JUɺ'JSFGPYɺ.JDSPTPGU&EHFɺ--7 .ɺ6OJUZΒ͕αϙʔτΛද໌  IUUQXXXQVCMJDLFZKQCMPHXFCBTTFNCMZIUNM n 7ɺ'JSFGPYɺ.JDSPTPGU&EHF͕ʮ8FC"TTFNCMZʯ ͷ࣮૷Λൃද ʢ IUUQXXXQVCMJDLFZKQCMPHWGJSFGPYNJDSPTPGU@FEHFXFC BTTFNCMZXFCIUNM 8FC"TTFNCMZͷ࠷ۙͷಈ޲

Slide 7

Slide 7 text

8FC"TTFNCMZ ͷϝϦοτ ߴ଎࣮ߦͱলϑΝΠϧαΠζ • ϒϥ΢βԋࢉॲཧͷߴ଎Խ ήʔϜ ը૾ॲཧ FUD – ߴ଎ 8FC"TTFNCMZ BTNKT +BWB4DSJQU௿଎ – ˞BTNKT .P[JMMB։ൃͷ +4ʹ੩తղੳ৘ใΛ෇༩ͨ͠αϒηοτ • సૹϑΝΠϧ༰ྔͷ࡟ݮ – BTNKT ͸ߴ଎ʹ࣮ߦͰ͖Δ͕ϑΝΠϧαΠζ͕ωοΫ – όΠφϦϑΥʔϚοτʹ͢Δ͜ͱͰղܾ

Slide 8

Slide 8 text

8FC"TTFNCMZ ͷར༻ϑϩʔ  ソースコード .ll .s .wast .wasm .c/.cpp LLVM IR (中間表現) WebAssembly のアセンブラ wasm のテキスト形式 (S式) wast をシリアライズしたもの

Slide 9

Slide 9 text

8FC"TTFNCMZ XBTU ܗࣜྫ (module (memory 1 (segment 8 "¥00¥00¥00¥00") ) (export "memory" memory) (export "count" $count) (func $count (result i32) (local $$0 i32) (i32.store offset=8 (i32.const 0) (i32.add (set_local $$0

Slide 10

Slide 10 text

8FC"TTFNCMZ ͷར༻ϑϩʔ  ソースコード .ll .s .wast .wasm .c/.cpp wast をシリアライズしたもの ★ 簡単に試すなら Emscripten がオススメ

Slide 11

Slide 11 text

QJOFNEXBTNFYBNQMF IUUQTHJUIVCDPNQJOFNEXBTNFYBNQMF σϞ