%3ch1%3e%e6%b7%b1%e5%85%a5+WebAssembly%ef%bc%9a%e4%bb%8e%e5%ad%97%e8%8a%82%e7%a0%81%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%88%b0%e4%ba%91%e5%8e%9f%e7%94%9f%e8%bf%90%e8%a1%8c%e6%97%b6%e5%ae%9e%e6%88%98%3c%2fh1%3e%0a%0a%3cp%3eWebAssembly%ef%bc%88WASM%ef%bc%89%e5%b7%b2%e7%bb%8f%e4%b8%8d%e6%98%af%e5%8f%aa%e8%83%bd%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e9%87%8c%e8%b7%91%e7%9a%84%e6%8a%80%e6%9c%af%e4%ba%86%e3%80%82%e4%bb%8e+Cloudflare+Workers+%e7%9a%84%e8%be%b9%e7%bc%98%e8%ae%a1%e7%ae%97%ef%bc%8c%e5%88%b0+Docker+%e6%a1%8c%e9%9d%a2%e7%89%88%e7%9a%84+WASM+%e5%ae%b9%e5%99%a8%ef%bc%8c%e5%86%8d%e5%88%b0+Polkadot+%e7%9a%84%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6%e8%bf%90%e8%a1%8c%e6%97%b6%ef%bc%8cWASM+%e6%ad%a3%e5%9c%a8%e9%87%8d%e6%96%b0%e5%ae%9a%e4%b9%89%22%e4%b8%80%e6%ac%a1%e7%bc%96%e5%86%99%ef%bc%8c%e5%88%b0%e5%a4%84%e8%bf%90%e8%a1%8c%22%e7%9a%84%e8%be%b9%e7%95%8c%e3%80%82%e6%9c%ac%e6%96%87%e5%b0%86%e5%b8%a6%e4%bd%a0%e4%bb%8e%e8%99%9a%e6%8b%9f%e6%8c%87%e4%bb%a4%e9%9b%86%e6%9e%b6%e6%9e%84%e5%87%ba%e5%8f%91%ef%bc%8c%e6%b7%b1%e5%85%a5+WASM+%e7%9a%84%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%a0%bc%e5%bc%8f%e3%80%81%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e6%a8%a1%e5%9e%8b%e3%80%81JIT+%e7%bc%96%e8%af%91%e7%ae%a1%e7%ba%bf%ef%bc%8c%e6%9c%80%e5%90%8e%e8%90%bd%e5%9c%b0%e5%88%b0%e4%b8%89%e4%b8%aa%e5%ae%8c%e6%95%b4%e7%9a%84%e5%ae%9e%e6%88%98%e9%a1%b9%e7%9b%ae%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e1.+WASM+%e6%8a%80%e6%9c%af%e6%a0%88%e5%85%a8%e6%99%af%e5%9b%be%3c%2fh2%3e%0a%0a%3cp%3e%e8%a6%81%e7%90%86%e8%a7%a3+WASM%ef%bc%8c%e5%85%88%e8%a6%81%e7%9c%8b%e6%b8%85%e5%ae%83%e5%9c%a8%e6%95%b4%e4%b8%aa%e6%8a%80%e6%9c%af%e6%a0%88%e4%b8%ad%e7%9a%84%e4%bd%8d%e7%bd%ae%e3%80%82WASM+%e6%9c%ac%e8%b4%a8%e4%b8%8a%e6%98%af%e4%b8%80%e4%b8%aa%3cstrong%3e%e5%9f%ba%e4%ba%8e%e6%a0%88%e7%9a%84%e8%99%9a%e6%8b%9f%e6%8c%87%e4%bb%a4%e9%9b%86%e6%9e%b6%e6%9e%84%ef%bc%88Stack-based+VISA%ef%bc%89%3c%2fstrong%3e%ef%bc%8c%e5%92%8c+JVM+%e7%9a%84%e5%ad%97%e8%8a%82%e7%a0%81%e3%80%81LuaJIT+%e7%9a%84+IR%e3%80%81CPython+%e7%9a%84+.pyc+%e5%a4%84%e4%ba%8e%e5%90%8c%e4%b8%80%e6%8a%bd%e8%b1%a1%e5%b1%82%e6%ac%a1%e2%80%94%e2%80%94%e4%bd%86%e5%ae%83%e7%9a%84%e8%ae%be%e8%ae%a1%e6%9b%b4%e8%b4%b4%e8%bf%91%e7%89%a9%e7%90%86%e7%a1%ac%e4%bb%b6%e7%9a%84%e6%89%a7%e8%a1%8c%e6%a8%a1%e5%9e%8b%e3%80%82%3c%2fp%3e%0a%0a%3cp%3eWASM+%e6%8a%80%e6%9c%af%e6%a0%88%e5%88%86%e4%b8%ba%e5%9b%9b%e5%b1%82%ef%bc%9a%3c%2fp%3e%0a%0a%3cul%3e%0a%3cli%3e%3cstrong%3eLayer+0+%e2%80%94+%e7%bc%96%e8%af%91%e7%9b%ae%e6%a0%87%3c%2fstrong%3e%ef%bc%9aClang%2fLLVM%ef%bc%88C%2fC%2b%2b%2fRust%ef%bc%89%e3%80%81TinyGo%e3%80%81emscripten+%e5%b0%86%e9%ab%98%e7%ba%a7%e8%af%ad%e8%a8%80%e7%bc%96%e8%af%91%e4%b8%ba+.wasm+%e6%a8%a1%e5%9d%97%3c%2fli%3e%0a%3cli%3e%3cstrong%3eLayer+1+%e2%80%94+%e6%a0%b8%e5%bf%83%e8%bf%90%e8%a1%8c%e6%97%b6%3c%2fstrong%3e%ef%bc%9aWasmtime%ef%bc%88Bytecode+Alliance%ef%bc%89%e3%80%81Wasmer%e3%80%81WAMR%ef%bc%88Intel%ef%bc%89%e3%80%81V8+%e5%86%85%e7%bd%ae%e6%89%a7%e8%a1%8c%e5%99%a8%3c%2fli%3e%0a%3cli%3e%3cstrong%3eLayer+2+%e2%80%94+%e7%b3%bb%e7%bb%9f%e6%8e%a5%e5%8f%a3%3c%2fstrong%3e%ef%bc%9aWASIpreview1+%2f+WASIpreview2%ef%bc%8c%e6%8f%90%e4%be%9b%e6%96%87%e4%bb%b6%e3%80%81%e7%bd%91%e7%bb%9c%e3%80%81%e6%97%b6%e9%92%9f%e7%ad%89+POSIX-like+%e8%83%bd%e5%8a%9b%3c%2fli%3e%0a%3cli%3e%3cstrong%3eLayer+3+%e2%80%94+%e7%bc%96%e6%8e%92%e5%b1%82%3c%2fstrong%3e%ef%bc%9awasmEdge%e3%80%81Docker%2bWASI%e3%80%81Cloudflare+Workers+%e7%9a%84+isolates%3c%2fli%3e%0a%3c%2ful%3e%0a%0a%3cp%3e%e5%80%bc%e5%be%97%e5%85%b3%e6%b3%a8%e7%9a%84%e6%98%af+WASI+preview2+%e7%9a%84+Component+Model%ef%bc%8c%e5%ae%83%e5%bc%95%e5%85%a5%e4%ba%86+WIT%ef%bc%88Wasm+Interface+Type%ef%bc%89%e6%8f%8f%e8%bf%b0%e8%af%ad%e8%a8%80%ef%bc%8c%e8%ae%a9%e4%b8%8d%e5%90%8c%e8%af%ad%e8%a8%80%e7%bc%96%e8%af%91%e7%9a%84+WASM+%e7%bb%84%e4%bb%b6%e5%8f%af%e4%bb%a5%e7%9b%b4%e6%8e%a5%e4%ba%92%e7%9b%b8%e8%b0%83%e7%94%a8%e2%80%94%e2%80%94%e8%bf%99%e6%98%af+WASM+%e7%94%9f%e6%80%81%e8%bf%88%e5%90%91%22%e8%af%ad%e8%a8%80%e6%97%a0%e5%85%b3%e5%be%ae%e6%9c%8d%e5%8a%a1%22%e7%9a%84%e5%85%b3%e9%94%ae%e4%b8%80%e6%ad%a5%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e2.+%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%a0%bc%e5%bc%8f%ef%bc%9a.section+%e4%b8%8e+LEB128+%e7%bc%96%e7%a0%81%3c%2fh2%3e%0a%0a%3cp%3e%e6%af%8f%e4%b8%aa+.wasm+%e6%96%87%e4%bb%b6%e4%bb%a5%e4%b8%80%e4%b8%aa+4+%e5%ad%97%e8%8a%82%e9%ad%94%e6%95%b0+%3ccode%3e%5c0asm%3c%2fcode%3e+%e5%bc%80%e5%a4%b4%ef%bc%8c%e5%90%8e%e8%b7%9f+4+%e5%ad%97%e8%8a%82%e7%89%88%e6%9c%ac%e5%8f%b7%ef%bc%88%e5%bd%93%e5%89%8d%e7%a8%b3%e5%ae%9a%e7%89%88%e4%b8%ba+1%ef%bc%89%ef%bc%8c%e7%84%b6%e5%90%8e%e6%98%af%e6%9c%80%e5%a4%9a+12+%e4%b8%aa+section%e3%80%82Section+%e7%9a%84%e8%ae%be%e8%ae%a1%e9%9d%9e%e5%b8%b8%e4%bc%98%e9%9b%85%ef%bc%9a%e6%af%8f%e4%b8%aa+section+%e9%83%bd%e6%9c%89%e8%87%aa%e5%b7%b1%e7%9a%84+ID%e3%80%81%e9%95%bf%e5%ba%a6%e5%92%8c+payload%ef%bc%8c%e8%bf%90%e8%a1%8c%e6%97%b6%e5%8f%af%e4%bb%a5%e8%b7%b3%e8%bf%87%e4%b8%8d%e8%ae%a4%e8%af%86%e7%9a%84+section%e3%80%82%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e.wasm+%e6%96%87%e4%bb%b6%e5%b8%83%e5%b1%80%ef%bc%88%e4%ba%8c%e8%bf%9b%e5%88%b6%ef%bc%89%ef%bc%9a%0a%0a%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a%e2%94%82++Magic%3a+0x00+0x61+0x73+0x6D+%e2%94%82++%2f%2f+%22%5c0asm%22%0a%e2%94%82++Version%3a+0x01+0x00+0x00+0x00%e2%94%82++%2f%2f+version+1%0a%e2%94%9c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%a4%0a%e2%94%82++Section+1%3a+Type+(id%3d1)++++++%e2%94%82++%2f%2f+%e5%87%bd%e6%95%b0%e7%ad%be%e5%90%8d%e8%a1%a8%0a%e2%94%82++Section+2%3a+Import+(id%3d2)++++%e2%94%82++%2f%2f+%e5%a4%96%e9%83%a8%e5%af%bc%e5%85%a5%e5%a3%b0%e6%98%8e%0a%e2%94%82++Section+3%3a+Function+(id%3d3)++%e2%94%82++%2f%2f+%e5%87%bd%e6%95%b0%e4%bd%93%e7%b4%a2%e5%bc%95%0a%e2%94%82++Section+4%3a+Table+(id%3d4)+++++%e2%94%82++%2f%2f+%e9%97%b4%e6%8e%a5%e5%87%bd%e6%95%b0%e8%a1%a8%0a%e2%94%82++Section+5%3a+Memory+(id%3d5)++++%e2%94%82++%2f%2f+%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e5%a3%b0%e6%98%8e%0a%e2%94%82++Section+6%3a+Global+(id%3d6)++++%e2%94%82++%2f%2f+%e5%85%a8%e5%b1%80%e5%8f%98%e9%87%8f%0a%e2%94%82++Section+7%3a+Export+(id%3d7)++++%e2%94%82++%2f%2f+%e5%af%bc%e5%87%ba%e9%a1%b9%0a%e2%94%82++Section+8%3a+Code+(id%3d10)+++++%e2%94%82++%2f%2f+%e5%87%bd%e6%95%b0%e4%bd%93%e5%ad%97%e8%8a%82%e7%a0%81%0a%e2%94%82++Section+9%3a+Data+(id%3d11)+++++%e2%94%82++%2f%2f+%e5%86%85%e5%ad%98%e5%88%9d%e5%a7%8b%e5%8c%96%e6%95%b0%e6%8d%ae%0a%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e6%89%80%e6%9c%89%e6%95%b4%e6%95%b0%e4%bd%bf%e7%94%a8+LEB128%ef%bc%88Little-Endian+Base+128%ef%bc%89%e5%8f%98%e9%95%bf%e7%bc%96%e7%a0%81%ef%bc%9a%e6%af%8f%e4%b8%aa%e5%ad%97%e8%8a%82%e7%9a%84%e6%9c%80%e9%ab%98+bit+%e4%b8%ba+continuation+bit%ef%bc%881+%e8%a1%a8%e7%a4%ba%e8%bf%98%e6%9c%89%e5%90%8e%e7%bb%ad%e5%ad%97%e8%8a%82%ef%bc%89%ef%bc%8c%e5%89%a9%e4%bd%99+7+bit+%e4%b8%ba%e6%9c%89%e6%95%88%e6%95%b0%e6%8d%ae%e3%80%82%e8%bf%99%e7%a7%8d%e7%bc%96%e7%a0%81%e8%ae%a9%e4%b8%80%e4%b8%aa+32+%e4%bd%8d%e6%95%b4%e6%95%b0%e5%8d%a0%e7%94%a8+1%7e5+%e4%b8%aa%e5%ad%97%e8%8a%82%ef%bc%8c%e9%9d%9e%e5%b8%b8%e9%80%82%e5%90%88%e6%8c%87%e4%bb%a4%e5%af%86%e9%9b%86%e4%bd%86%e6%95%b0%e5%80%bc%e5%81%8f%e5%b0%8f%e7%9a%84%e5%9c%ba%e6%99%af%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e3.+%e5%9f%ba%e4%ba%8e%e6%a0%88%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba%e4%b8%8e%e6%8c%87%e4%bb%a4%e8%b0%83%e5%ba%a6%3c%2fh2%3e%0a%0a%3cp%3eWASM+%e7%9a%84%e6%89%a7%e8%a1%8c%e6%a8%a1%e5%9e%8b%e6%98%af%e7%ba%af%e6%a0%88%e5%bc%8f%e8%99%9a%e6%8b%9f%e6%9c%ba%ef%bc%8c%e6%b2%a1%e6%9c%89%e9%80%9a%e7%94%a8%e5%af%84%e5%ad%98%e5%99%a8%e3%80%82%e6%89%80%e6%9c%89%e7%9a%84%e7%ae%97%e6%9c%af%e8%bf%90%e7%ae%97%e3%80%81%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e3%80%81%e5%86%85%e5%ad%98%e8%ae%bf%e9%97%ae%e9%83%bd%e9%80%9a%e8%bf%87%e6%93%8d%e4%bd%9c%e6%95%b0%e6%a0%88%e5%ae%8c%e6%88%90%e3%80%82%e8%bf%99%e7%a7%8d%e8%ae%be%e8%ae%a1%e7%9a%84%e4%bc%98%e5%8a%bf%e5%9c%a8%e4%ba%8e%ef%bc%9a%e5%ad%97%e8%8a%82%e7%a0%81%e6%9e%81%e5%85%b6%e7%b4%a7%e5%87%91%ef%bc%8c%e4%b8%94%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e5%ae%9e%e7%8e%b0%e5%8f%af%e4%bb%a5%e9%9d%9e%e5%b8%b8%e7%ae%80%e6%b4%81%e3%80%82%3c%2fp%3e%0a%0a%3cp%3e%e4%bb%a5%e4%b8%8b%e6%98%af%e4%b8%80%e4%b8%aa+WASM+%e5%8a%a0%e6%b3%95%e5%87%bd%e6%95%b0%e7%9a%84%e6%89%a7%e8%a1%8c%e8%bf%87%e7%a8%8b%ef%bc%9a%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e(func+%24add+(param+%24a+i32)+(param+%24b+i32)+(result+i32)%0a++local.get+%24a++++%3b%3b+%e5%b0%86%e5%8f%82%e6%95%b0+a+%e5%8e%8b%e6%a0%88+%e2%86%92+%5ba%5d%0a++local.get+%24b++++%3b%3b+%e5%b0%86%e5%8f%82%e6%95%b0+b+%e5%8e%8b%e6%a0%88+%e2%86%92+%5ba%2c+b%5d%0a++i32.add+++++++++%3b%3b+%e5%bc%b9%e5%87%ba%e4%b8%a4%e4%b8%aa%e5%80%bc%ef%bc%8c%e7%9b%b8%e5%8a%a0%ef%bc%8c%e7%bb%93%e6%9e%9c%e5%8e%8b%e6%a0%88+%e2%86%92+%5ba%2bb%5d%0a)+++++++++++++++++++%3b%3b+%e6%a0%88%e9%a1%b6%e4%bd%9c%e4%b8%ba%e8%bf%94%e5%9b%9e%e5%80%bc%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e5%9c%a8%e7%9c%9f%e5%ae%9e%e8%bf%90%e8%a1%8c%e6%97%b6%e4%b8%ad%ef%bc%8cWASM+%e7%bb%8f%e5%8e%86%e4%bb%8e%e8%a7%a3%e9%87%8a%e6%89%a7%e8%a1%8c%e5%88%b0+JIT+%e7%bc%96%e8%af%91%e7%9a%84%e5%a4%9a%e5%b1%82%e7%ae%a1%e7%ba%bf%ef%bc%9a%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e+++++++++++++++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a+++++++++++++++%e2%94%82+++.wasm+%e5%ad%97%e8%8a%82%e7%a0%81+++%e2%94%82%0a+++++++++++++++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%ac%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%0a++++++++++++++++++++++++%e2%96%bc%0a+++++++++++++++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a+++++++++++++++%e2%94%82+++%e9%aa%8c%e8%af%81+%26+%e8%a7%a3%e7%a0%81++++%e2%94%82+%e9%9d%99%e6%80%81%e7%b1%bb%e5%9e%8b%e6%a3%80%e6%9f%a5%e3%80%81%e6%8e%a7%e5%88%b6%e6%b5%81%e5%ae%8c%e6%95%b4%e6%80%a7%0a+++++++++++++++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%ac%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%0a++++++++++++++++++++++++%e2%96%bc%0a++++++++++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%b4%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a++++++++++%e2%96%bc+++++++++++++++++++++++++++%e2%96%bc%0a++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90++++++++++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a++%e2%94%82++%e5%9f%ba%e7%ba%bf%e7%bc%96%e8%af%91%e5%99%a8+++%e2%94%82++++++++++%e2%94%82+++%e4%bc%98%e5%8c%96%e7%bc%96%e8%af%91%e5%99%a8++++++%e2%94%82%0a++%e2%94%82+(Liftoff%2f++++%e2%94%82++++++++++%e2%94%82++(TurboFan%2f++++++%e2%94%82%0a++%e2%94%82++Singlepass)+%e2%94%82++++++++++%e2%94%82+++Cranelift)+++++%e2%94%82%0a++%e2%94%82++++++++++++++%e2%94%82++++++++++%e2%94%82++++++++++++++++++%e2%94%82%0a++%e2%94%82++%e7%bc%96%e8%af%91%e9%80%9f%e5%ba%a6%e5%bf%ab+++%e2%94%82++++++++++%e2%94%82++SIMD%e3%80%81%e5%86%85%e8%81%94%e3%80%81++++%e2%94%82%0a++%e2%94%82++%e4%bb%a3%e7%a0%81%e8%b4%a8%e9%87%8f%e4%b8%80%e8%88%ac++%e2%94%82++++++++++%e2%94%82++%e6%ad%bb%e4%bb%a3%e7%a0%81%e6%b6%88%e9%99%a4++++++%e2%94%82%0a++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%ac%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98++++++++++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%ac%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%0a+++++++++%e2%94%82++++%e7%83%ad%e7%82%b9%e6%a3%80%e6%b5%8b%e8%a7%a6%e5%8f%91%e5%86%8d%e7%bc%96%e8%af%91++++++++%e2%94%82%0a+++++++++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%ac%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%0a+++++++++++++++++++++++%e2%96%bc%0a++++++++++++++%e2%94%8c%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%90%0a++++++++++++++%e2%94%82++Native+Code++++%e2%94%82%0a++++++++++++++%e2%94%82++(x86%2fARM%2fWASM)+%e2%94%82%0a++++++++++++++%e2%94%94%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%80%e2%94%98%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3eV8+%e5%bc%95%e6%93%8e%e7%9a%84+Liftoff+%e5%9f%ba%e7%ba%bf%e7%bc%96%e8%af%91%e5%99%a8%e5%af%b9%e6%af%8f%e4%b8%aa%e5%87%bd%e6%95%b0%e5%8f%aa%e8%bf%9b%e8%a1%8c%e4%b8%80%e6%ac%a1%e7%ba%bf%e6%80%a7%e6%89%ab%e6%8f%8f%ef%bc%8c%e7%94%9f%e6%88%90%e6%9c%ba%e5%99%a8%e7%a0%81%e8%80%8c%e4%b8%8d%e5%81%9a%e4%bb%bb%e4%bd%95%e4%bc%98%e5%8c%96%e2%80%94%e2%80%94%e7%9b%ae%e7%9a%84%e6%98%af%e6%9c%80%e5%a4%a7%e5%8c%96%e5%90%af%e5%8a%a8%e9%80%9f%e5%ba%a6%e3%80%82%e5%bd%93%e5%87%bd%e6%95%b0%e8%a2%ab%e6%a0%87%e8%ae%b0%e4%b8%ba%e7%83%ad%e7%82%b9%e5%90%8e%ef%bc%8cTurboFan+%e4%bc%98%e5%8c%96%e7%bc%96%e8%af%91%e5%99%a8%e6%89%8d%e4%bc%9a%e6%8e%a5%e6%89%8b%ef%bc%8c%e8%bf%9b%e8%a1%8c%e5%86%85%e8%81%94%e3%80%81%e5%be%aa%e7%8e%af%e5%b1%95%e5%bc%80%e3%80%81%e9%80%83%e9%80%b8%e5%88%86%e6%9e%90%e7%ad%89%e7%bb%8f%e5%85%b8%e4%bc%98%e5%8c%96%e3%80%82%e8%bf%99%e7%a7%8d%e4%b8%a4%e5%b1%82%e7%bc%96%e8%af%91%e7%ad%96%e7%95%a5%e8%ae%a9+Web+%e5%ba%94%e7%94%a8%e7%9a%84%e5%90%af%e5%8a%a8%e5%bb%b6%e8%bf%9f%e5%92%8c%e5%b3%b0%e5%80%bc%e6%80%a7%e8%83%bd%e5%be%97%e5%88%b0%e4%ba%86%e5%be%88%e5%a5%bd%e7%9a%84%e5%b9%b3%e8%a1%a1%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e4.+%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e6%a8%a1%e5%9e%8b%e4%b8%8e%e5%86%85%e5%ad%98%e5%ae%89%e5%85%a8%3c%2fh2%3e%0a%0a%3cp%3eWASM+%e7%9a%84%e5%86%85%e5%ad%98%e6%a8%a1%e5%9e%8b%e6%9e%81%e5%85%b6%e7%ae%80%e6%b4%81%ef%bc%9a%e4%b8%80%e4%b8%aa%e6%88%96%e5%a4%9a%e4%b8%aa%e8%bf%9e%e7%bb%ad%e7%9a%84%e5%ad%97%e8%8a%82%e6%95%b0%e7%bb%84%ef%bc%88Memory%ef%bc%89%ef%bc%8c%e6%9c%80%e5%a4%a7+4GB%ef%bc%8832-bit+%e5%9c%b0%e5%9d%80%e7%a9%ba%e9%97%b4%ef%bc%89%e3%80%82%e4%b8%8d%e8%83%bd%e9%9a%8f%e6%9c%ba%e5%88%86%e9%85%8d%e7%a6%bb%e6%95%a3%e7%9a%84%e5%a0%86%e5%86%85%e5%ad%98%ef%bc%8c%e5%8f%aa%e8%83%bd%e5%af%b9%e8%bf%99%e5%9d%97%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e8%bf%9b%e8%a1%8c%e8%af%bb%e5%86%99%e3%80%82%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e%3b%3b+%e5%a3%b0%e6%98%8e%e4%b8%80%e4%b8%aa%e5%88%9d%e5%a7%8b+1+%e9%a1%b5%ef%bc%8864KB%ef%bc%89%e3%80%81%e6%9c%80%e5%a4%a7+10+%e9%a1%b5%e7%9a%84%e5%86%85%e5%ad%98%0a(memory+(export+%22mem%22)+1+10)%0a%0a%3b%3b+%e4%bb%8e%e5%81%8f%e7%a7%bb%e9%87%8f+0+%e5%bc%80%e5%a7%8b%e5%86%99%e5%85%a5%e5%ad%97%e7%ac%a6%e4%b8%b2+%22WASM%22%0a(data+(i32.const+0)+%22WASM%5c00%22)%0a%0a%3b%3b+%e5%9c%a8%e5%81%8f%e7%a7%bb%e9%87%8f+16+%e5%a4%84%e5%86%99%e5%85%a5%e4%b8%80%e4%b8%aa+32+%e4%bd%8d%e6%95%b4%e6%95%b0+(0x12345678)%0a(i32.store+(i32.const+16)+(i32.const+0x12345678))%0a%0a%3b%3b+%e8%af%bb%e5%8f%96%e8%af%a5%e6%95%b4%e6%95%b0%0a(i32.load+(i32.const+16))++%3b%3b+%e2%86%92+0x12345678%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e8%bf%99%e7%a7%8d%e8%ae%be%e8%ae%a1%e5%b8%a6%e6%9d%a5%e4%ba%86%e4%b8%a4%e4%b8%aa%e5%85%b3%e9%94%ae%e5%bd%b1%e5%93%8d%ef%bc%9a%3c%2fp%3e%0a%0a%3cul%3e%0a%3cli%3e%3cstrong%3e%e6%b2%99%e7%ae%b1%e9%9a%94%e7%a6%bb%3c%2fstrong%3e%ef%bc%9a%e5%ae%bf%e4%b8%bb%e7%a8%8b%e5%ba%8f%e5%88%86%e9%85%8d%e7%9a%84%e6%98%af+WASM+%e8%99%9a%e6%8b%9f%e5%9c%b0%e5%9d%80%e7%a9%ba%e9%97%b4%e4%b8%ad%e7%9a%84%e5%81%8f%e7%a7%bb%e9%87%8f%ef%bc%8c%e8%80%8c%e9%9d%9e%e7%9c%9f%e5%ae%9e%e6%8c%87%e9%92%88%e3%80%82WASM+%e4%bb%a3%e7%a0%81%e6%b0%b8%e8%bf%9c%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e4%b9%8b%e5%a4%96%e7%9a%84%e6%95%b0%e6%8d%ae%e2%80%94%e2%80%94%e8%bf%99%e6%98%af+WASM+%e5%ae%89%e5%85%a8%e8%be%b9%e7%95%8c%e7%9a%84%e7%89%a9%e7%90%86%e4%bf%9d%e8%af%81%3c%2fli%3e%0a%3cli%3e%3cstrong%3eFFI+%e8%b0%83%e7%94%a8%e7%ba%a6%e5%ae%9a%e5%a4%8d%e6%9d%82%e5%8c%96%3c%2fstrong%3e%ef%bc%9a%e6%89%80%e6%9c%89%e8%b7%a8%e8%be%b9%e7%95%8c%e6%95%b0%e6%8d%ae%e4%bc%a0%e9%80%92%e5%bf%85%e9%a1%bb%e8%b5%b0%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e3%80%82%e5%ad%97%e7%ac%a6%e4%b8%b2%e3%80%81%e7%bb%93%e6%9e%84%e4%bd%93%e3%80%81%e6%95%b0%e7%bb%84%e9%83%bd%e9%9c%80%e8%a6%81%e6%89%8b%e5%8a%a8%e5%ba%8f%e5%88%97%e5%8c%96%2f%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96%ef%bc%8c%e8%bf%99%e4%b9%9f%e6%98%af+wasm-bindgen+%e8%bf%99%e7%b1%bb%e5%b7%a5%e5%85%b7%e5%ad%98%e5%9c%a8%e7%9a%84%e4%bb%b7%e5%80%bc%3c%2fli%3e%0a%3c%2ful%3e%0a%0a%3cp%3e%e5%9c%a8%e5%ae%9e%e6%88%98%e4%b8%ad%ef%bc%8cRust+%e8%af%ad%e8%a8%80%e4%b8%8e+WASM+%e7%9a%84%e7%bb%93%e5%90%88%e6%9c%80%e4%b8%ba%e7%b4%a7%e5%af%86%e3%80%82%3ccode%3ewasm-pack%3c%2fcode%3e+%2b+%3ccode%3ewasm-bindgen%3c%2fcode%3e+%e7%9a%84%e7%bb%84%e5%90%88%e8%ae%a9+Rust+%e5%87%bd%e6%95%b0%e5%8f%af%e4%bb%a5%e7%9b%b4%e6%8e%a5%e5%af%bc%e5%87%ba%e4%b8%ba%e5%8f%af%e7%94%a8%e7%9a%84+JS+API%ef%bc%8c%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90+TypeScript+%e7%b1%bb%e5%9e%8b%e5%ae%9a%e4%b9%89%ef%bc%8c%e5%a4%a7%e5%b9%85%e9%99%8d%e4%bd%8e%e4%ba%86+FFI+%e7%9a%84%e5%bf%83%e6%99%ba%e8%b4%9f%e6%8b%85%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e5.+JIT+%e7%bc%96%e8%af%91%e7%ae%a1%e7%ba%bf%ef%bc%9aCranelift+vs+LLVM%3c%2fh2%3e%0a%0a%3cp%3e%e4%b8%8d%e5%90%8c%e7%9a%84+WASM+%e8%bf%90%e8%a1%8c%e6%97%b6%e9%80%89%e6%8b%a9%e4%ba%86%e6%88%aa%e7%84%b6%e4%b8%8d%e5%90%8c%e7%9a%84%e7%bc%96%e8%af%91%e7%ad%96%e7%95%a5%ef%bc%9a%3c%2fp%3e%0a%0a%3ctable%3e%0a%3cthead%3e%3ctr%3e%3cth%3e%e7%bc%96%e8%af%91%e5%99%a8%3c%2fth%3e%3cth%3e%e5%85%b8%e5%9e%8b%e4%bd%bf%e7%94%a8%e8%80%85%3c%2fth%3e%3cth%3e%e7%bc%96%e8%af%91%e9%80%9f%e5%ba%a6%3c%2fth%3e%3cth%3e%e7%94%9f%e6%88%90%e4%bb%a3%e7%a0%81%e8%b4%a8%e9%87%8f%3c%2fth%3e%3cth%3e%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af%3c%2fth%3e%3c%2ftr%3e%3c%2fthead%3e%0a%3ctbody%3e%0a%3ctr%3e%3ctd%3eCranelift%3c%2ftd%3e%3ctd%3eWasmtime%3c%2ftd%3e%3ctd%3e%e6%9e%81%e5%bf%ab%ef%bc%88%7e10+MB%2fs%ef%bc%89%3c%2ftd%3e%3ctd%3e%e8%89%af%e5%a5%bd%3c%2ftd%3e%3ctd%3e%e8%be%b9%e7%bc%98%e8%ae%a1%e7%ae%97%e3%80%81%e7%9f%ad%e6%9c%9f%e8%bf%9b%e7%a8%8b%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eLLVM%3c%2ftd%3e%3ctd%3eWasmer+(LLVM%e5%90%8e%e7%ab%af)%3c%2ftd%3e%3ctd%3e%e6%85%a2%ef%bc%88%7e0.5+MB%2fs%ef%bc%89%3c%2ftd%3e%3ctd%3e%e6%9e%81%e4%bd%b3%3c%2ftd%3e%3ctd%3e%e9%95%bf%e6%97%b6%e6%9c%8d%e5%8a%a1%e3%80%81%e8%ae%a1%e7%ae%97%e5%af%86%e9%9b%86%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eSinglepass%3c%2ftd%3e%3ctd%3eWasmer+(Singlepass)%3c%2ftd%3e%3ctd%3e%e6%9c%80%e5%bf%ab%ef%bc%88%7e30+MB%2fs%ef%bc%89%3c%2ftd%3e%3ctd%3e%e4%b8%80%e8%88%ac%3c%2ftd%3e%3ctd%3eServerless+%e5%86%b7%e5%90%af%e5%8a%a8%e6%95%8f%e6%84%9f%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eLiftoff%3c%2ftd%3e%3ctd%3eV8+%2f+Chrome%3c%2ftd%3e%3ctd%3e%e5%bf%ab%3c%2ftd%3e%3ctd%3e%e4%b8%ad%e7%ad%89%3c%2ftd%3e%3ctd%3e%e6%b5%8f%e8%a7%88%e5%99%a8%e7%8e%af%e5%a2%83%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eWinch%3c%2ftd%3e%3ctd%3eV8+(2023%2b)%3c%2ftd%3e%3ctd%3e%e4%b8%ad%e7%ad%89%3c%2ftd%3e%3ctd%3e%e6%8e%a5%e8%bf%91Liftoff%e4%b8%8a%e9%99%90%3c%2ftd%3e%3ctd%3e%e6%b5%8f%e8%a7%88%e5%99%a8%e7%8e%af%e5%a2%83%3c%2ftd%3e%3c%2ftr%3e%0a%3c%2ftbody%3e%0a%3c%2ftable%3e%0a%0a%3cp%3eCranelift+%e6%98%af%e4%b8%80%e4%b8%aa%e5%9f%ba%e4%ba%8e+ISA%ef%bc%88Instruction+Selection+API%ef%bc%89%e7%9a%84%e4%bb%a3%e7%a0%81%e7%94%9f%e6%88%90%e5%99%a8%ef%bc%8c%e5%ae%83%e7%9a%84+IR+%e8%ae%be%e8%ae%a1%e9%9d%9e%e5%b8%b8%e7%9b%b4%e6%8e%a5%ef%bc%9a%e5%8d%95%e9%81%8d+SSA+%2b+%e6%a8%a1%e5%bc%8f%e5%8c%b9%e9%85%8d%e6%8c%87%e4%bb%a4%e9%80%89%e6%8b%a9%e3%80%82%e4%b8%8e+LLVM+%e7%9a%84%e5%a4%9a%e9%81%8d%e4%bc%98%e5%8c%96%e7%9b%b8%e6%af%94%ef%bc%8cCranelift+%e7%89%ba%e7%89%b2%e4%ba%86%e5%a4%a7%e9%87%8f%e5%b3%b0%e5%80%bc%e6%80%a7%e8%83%bd%ef%bc%8c%e6%8d%a2%e6%9d%a5%e4%ba%86%e6%95%b0%e9%87%8f%e7%ba%a7%e7%9a%84%e7%bc%96%e8%af%91%e9%80%9f%e5%ba%a6%e6%8f%90%e5%8d%87%e3%80%82%e5%af%b9%e4%ba%8e+Cloudflare+Workers+%e8%bf%99%e7%b1%bb%e8%af%b7%e6%b1%82%e7%ba%a7%e6%89%a7%e8%a1%8c%e7%8e%af%e5%a2%83%ef%bc%8c%e6%af%8f%e6%ac%a1%e8%af%b7%e6%b1%82%e9%83%bd%e5%9c%a8%e6%96%b0+isolate+%e4%b8%ad%e8%bf%90%e8%a1%8c%ef%bc%8c%e7%bc%96%e8%af%91%e9%80%9f%e5%ba%a6%e6%af%94%e4%bb%a3%e7%a0%81%e8%b4%a8%e9%87%8f%e6%9b%b4%e9%87%8d%e8%a6%81%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e6.+WASI+preview2+%e4%b8%8e+Component+Model%3c%2fh2%3e%0a%0a%3cp%3eWASI+preview1+%e6%98%af%e4%b8%80%e4%b8%aa%22%e6%9c%80%e5%b0%8f%e5%8f%af%e7%94%a8%22%e7%9a%84%e7%b3%bb%e7%bb%9f%e6%8e%a5%e5%8f%a3%e7%89%88%e6%9c%ac%ef%bc%8c%e6%8a%b9%e5%b9%b3%e4%ba%86+30%2b+%e5%9f%ba%e7%a1%80%e7%b3%bb%e7%bb%9f%e8%b0%83%e7%94%a8%e3%80%82%e4%bd%86+preview1+%e6%98%af%e5%8d%95%e6%a8%a1%e5%9d%97%e6%a8%a1%e5%9e%8b%e2%80%94%e2%80%94%e6%af%8f%e4%b8%aa+WASM+%e5%ae%9e%e4%be%8b%e5%8f%aa%e8%83%bd%e7%9c%8b%e5%88%b0%e4%b8%80%e4%b8%aa%e6%a8%a1%e5%9d%97%ef%bc%8c%e6%97%a0%e6%b3%95%e7%9b%b4%e6%8e%a5%e9%93%be%e6%8e%a5%e5%85%b6%e4%bb%96%e6%a8%a1%e5%9d%97%e3%80%82preview2+%e5%bc%95%e5%85%a5%e7%9a%84+Component+Model+%e5%bd%bb%e5%ba%95%e6%94%b9%e5%8f%98%e4%ba%86%e6%b8%b8%e6%88%8f%e8%a7%84%e5%88%99%e3%80%82%3c%2fp%3e%0a%0a%3cp%3eComponent+Model+%e7%9a%84%e6%a0%b8%e5%bf%83%e5%88%9b%e6%96%b0%e6%98%af+WIT+%e6%8e%a5%e5%8f%a3%e5%ae%9a%e4%b9%89%e8%af%ad%e8%a8%80%ef%bc%9a%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e%2f%2f+calculator.wit%0apackage+docs%3acalculator%400.1.0%3b%0a%0ainterface+operations+%7b%0a++add%3a+func(a%3a+u32%2c+b%3a+u32)+-%26gt%3b+u32%3b%0a++multiply%3a+func(a%3a+u32%2c+b%3a+u32)+-%26gt%3b+u32%3b%0a%7d%0a%0aworld+calculator+%7b%0a++export+operations%3b%0a%7d%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e6%9c%89%e4%ba%86+WIT+%e5%ae%9a%e4%b9%89%e5%90%8e%ef%bc%8c%3ccode%3ewit-bindgen%3c%2fcode%3e+%e5%8f%af%e4%bb%a5%e4%b8%ba%e5%ae%bf%e4%b8%bb%e7%ab%af%ef%bc%88Rust%2fJS%2fPython%ef%bc%89%e5%92%8c+WASM+%e7%ab%af%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90%e7%b1%bb%e5%9e%8b%e5%ae%89%e5%85%a8%e7%9a%84%e7%bb%91%e5%ae%9a%e4%bb%a3%e7%a0%81%e3%80%82%e8%bf%99%e6%84%8f%e5%91%b3%e7%9d%80%e4%b8%80%e4%b8%aa%e7%94%a8+C+%e7%bc%96%e5%86%99%e7%9a%84%e8%ae%a1%e7%ae%97%e5%bc%95%e6%93%8e%e5%92%8c%e4%b8%80%e4%b8%aa%e7%94%a8+Rust+%e7%bc%96%e5%86%99%e7%9a%84%e7%bd%91%e7%bb%9c%e5%8d%8f%e8%ae%ae%e6%a0%88%ef%bc%8c%e5%8f%af%e4%bb%a5%e9%80%9a%e8%bf%87%e7%bb%9f%e4%b8%80%e6%8e%a5%e5%8f%a3%e7%bb%84%e5%90%88%e8%b5%b7%e6%9d%a5%ef%bc%8c%e8%80%8c%e5%8f%8c%e6%96%b9%e9%83%bd%e4%b8%8d%e9%9c%80%e8%a6%81%e7%9f%a5%e9%81%93%e5%af%b9%e6%96%b9%e7%9a%84%e8%af%ad%e8%a8%80%e7%bb%86%e8%8a%82%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e7.+%e5%ae%9e%e6%88%98%e4%b8%80%ef%bc%9aRust+%e2%86%92+WASM+%e5%9b%be%e5%83%8f%e5%a4%84%e7%90%86%e7%ae%a1%e9%81%93%3c%2fh2%3e%0a%0a%3cp%3e%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%ad%e9%ab%98%e6%80%a7%e8%83%bd%e5%9b%be%e5%83%8f%e5%a4%84%e7%90%86%e7%9a%84%e7%bb%8f%e5%85%b8%e5%9c%ba%e6%99%af%e3%80%82%e6%88%91%e4%bb%ac%e5%b0%86+Rust+%3ccode%3eimage%3c%2fcode%3e+crate+%e7%bc%96%e8%af%91%e4%b8%ba+WASM%ef%bc%8c%e5%9c%a8%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%ad%e5%ae%8c%e6%88%90+JPEG+%e8%a7%a3%e7%a0%81+%e2%86%92+%e7%81%b0%e5%ba%a6%e5%8c%96+%e2%86%92+Sobel+%e8%be%b9%e7%bc%98%e6%a3%80%e6%b5%8b+%e2%86%92+%e9%87%8d%e6%96%b0%e7%bc%96%e7%a0%81%e4%b8%ba+WebP+%e7%9a%84%e5%ae%8c%e6%95%b4%e6%b5%81%e7%a8%8b%e3%80%82%3c%2fp%3e%0a%0a%3cp%3e%3cstrong%3eCargo.toml+%e9%85%8d%e7%bd%ae%ef%bc%9a%3c%2fstrong%3e%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e%5bpackage%5d%0aname+%3d+%22img-pipeline%22%0aversion+%3d+%220.1.0%22%0aedition+%3d+%222021%22%0a%0a%5blib%5d%0acrate-type+%3d+%5b%22cdylib%22%2c+%22rlib%22%5d%0a%0a%5bdependencies%5d%0awasm-bindgen+%3d+%220.2%22%0aimage+%3d+%220.24%22%0a%0a%5bprofile.release%5d%0aopt-level+%3d+3%0alto+%3d+true%0astrip+%3d+true%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%3cstrong%3e%e6%a0%b8%e5%bf%83%e5%a4%84%e7%90%86%e5%87%bd%e6%95%b0%ef%bc%88%2flib.rs%ef%bc%89%ef%bc%9a%3c%2fstrong%3e%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3euse+wasm_bindgen%3a%3aprelude%3a%3a*%3b%0ause+image%3a%3a%7bDynamicImage%2c+GrayImage%2c+imageops%2c+Luma%7d%3b%0a%0a%23%5bwasm_bindgen%5d%0apub+fn+sobel_edge_detect(jpeg_bytes%3a+%26amp%3b%5bu8%5d)+-%26gt%3b+Vec%26lt%3bu8%26gt%3b+%7b%0a++++%2f%2f+1.+%e8%a7%a3%e7%a0%81+JPEG%0a++++let+img+%3d+image%3a%3aload_from_memory(jpeg_bytes)%0a++++++++.expect(%22failed+to+decode+JPEG%22)%3b%0a++++%0a++++%2f%2f+2.+%e8%bd%ac%e7%81%b0%e5%ba%a6%e5%9b%be%0a++++let+gray%3a+GrayImage+%3d+imageops%3a%3agrayscale(%26amp%3bimg.to_rgba8())%3b%0a++++%0a++++%2f%2f+3.+Sobel+%e7%ae%97%e5%ad%90%e8%be%b9%e7%bc%98%e6%a3%80%e6%b5%8b%0a++++let+(width%2c+height)+%3d+gray.dimensions()%3b%0a++++let+mut+edge+%3d+GrayImage%3a%3anew(width%2c+height)%3b%0a++++%0a++++let+sobel_x%3a+%5b%5bi32%3b+3%5d%3b+3%5d+%3d+%5b%5b-1%2c+0%2c+1%5d%2c+%5b-2%2c+0%2c+2%5d%2c+%5b-1%2c+0%2c+1%5d%5d%3b%0a++++let+sobel_y%3a+%5b%5bi32%3b+3%5d%3b+3%5d+%3d+%5b%5b-1%2c+-2%2c+-1%5d%2c+%5b0%2c+0%2c+0%5d%2c+%5b1%2c+2%2c+1%5d%5d%3b%0a++++%0a++++for+y+in+1..height+-+1+%7b%0a++++++++for+x+in+1..width+-+1+%7b%0a++++++++++++let+mut+gx+%3d+0i32%3b%0a++++++++++++let+mut+gy+%3d+0i32%3b%0a++++++++++++for+ky+in+0..3+%7b%0a++++++++++++++++for+kx+in+0..3+%7b%0a++++++++++++++++++++let+pixel+%3d+gray.get_pixel(x+%2b+kx+-+1%2c+y+%2b+ky+-+1)%5b0%5d+as+i32%3b%0a++++++++++++++++++++gx+%2b%3d+pixel+*+sobel_x%5bky%5d%5bkx%5d%3b%0a++++++++++++++++++++gy+%2b%3d+pixel+*+sobel_y%5bky%5d%5bkx%5d%3b%0a++++++++++++++++%7d%0a++++++++++++%7d%0a++++++++++++let+magnitude+%3d+((gx+*+gx+%2b+gy+*+gy)+as+f64).sqrt().min(255.0)+as+u8%3b%0a++++++++++++edge.put_pixel(x%2c+y%2c+Luma(%5bmagnitude%5d))%3b%0a++++++++%7d%0a++++%7d%0a++++%0a++++%2f%2f+4.+%e7%bc%96%e7%a0%81%e4%b8%ba+PNG+%e8%be%93%e5%87%ba%0a++++let+mut+output+%3d+Vec%3a%3anew()%3b%0a++++edge.write_to(%26amp%3bmut+std%3a%3aio%3a%3aCursor%3a%3anew(%26amp%3bmut+output)%2c+image%3a%3aImageFormat%3a%3aPng)%0a++++++++.expect(%22failed+to+encode+PNG%22)%3b%0a++++output%0a%7d%0a%0a%23%5bwasm_bindgen%5d%0apub+fn+allocate(size%3a+usize)+-%26gt%3b+*mut+u8+%7b%0a++++let+mut+buf+%3d+Vec%3a%3awith_capacity(size)%3b%0a++++let+ptr+%3d+buf.as_mut_ptr()%3b%0a++++std%3a%3amem%3a%3aforget(buf)%3b+%2f%2f+%e9%98%b2%e6%ad%a2+Rust+%e9%87%8a%e6%94%be%0a++++ptr%0a%7d%0a%0a%23%5bwasm_bindgen%5d%0apub+fn+deallocate(ptr%3a+*mut+u8%2c+size%3a+usize)+%7b%0a++++unsafe+%7b%0a++++++++let+_+%3d+Vec%3a%3afrom_raw_parts(ptr%2c+0%2c+size)%3b%0a++++%7d%0a%7d%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%3cstrong%3eJavaScript+%e5%ae%bf%e4%b8%bb%e8%b0%83%e7%94%a8%ef%bc%9a%3c%2fstrong%3e%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3eimport+init%2c+%7b+sobel_edge_detect%2c+allocate%2c+deallocate+%7d+from+%27.%2fpkg%2fimg_pipeline.js%27%3b%0a%0aawait+init()%3b%0a%0a%2f%2f+%e8%af%bb%e5%8f%96%e6%96%87%e4%bb%b6%0aconst+file+%3d+document.querySelector(%27input%5btype%3dfile%5d%27).files%5b0%5d%3b%0aconst+arrayBuffer+%3d+await+file.arrayBuffer()%3b%0aconst+jpegData+%3d+new+Uint8Array(arrayBuffer)%3b%0a%0a%2f%2f+%e4%bc%a0%e9%80%92%e5%88%b0+WASM+%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%0aconst+ptr+%3d+allocate(jpegData.length)%3b%0aconst+wasmMem+%3d+new+Uint8Array(memory.buffer)%3b%0awasmMem.set(jpegData%2c+ptr)%3b%0a%0a%2f%2f+%e8%b0%83%e7%94%a8%e5%a4%84%e7%90%86%e5%87%bd%e6%95%b0%ef%bc%88%e6%b3%a8%e6%84%8f%ef%bc%9a%e5%ae%9e%e9%99%85%e4%bd%bf%e7%94%a8+wasm-bindgen+%e7%94%9f%e6%88%90%e7%9a%84%e7%bb%91%e5%ae%9a%e5%8f%af%e7%ae%80%e5%8c%96%e6%ad%a4%e6%ad%a5%ef%bc%89%0aconst+resultPtr+%3d+sobel_edge_detect(wasmMem.slice(ptr%2c+ptr+%2b+jpegData.length))%3b%0adeallocate(ptr%2c+jpegData.length)%3b%0a%0a%2f%2f+%e6%98%be%e7%a4%ba%e7%bb%93%e6%9e%9c%0aconst+blob+%3d+new+Blob(%5bresultPtr%5d%2c+%7b+type%3a+%27image%2fpng%27+%7d)%3b%0aconst+url+%3d+URL.createObjectURL(blob)%3b%0adocument.querySelector(%27%23output%27).src+%3d+url%3b%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e5%ae%9e%e6%b5%8b%e6%80%a7%e8%83%bd%ef%bc%9a%e5%9c%a8+M1+MacBook+Air+%e4%b8%8a%e5%a4%84%e7%90%86%e4%b8%80%e5%bc%a0+1920%c3%971080+%e7%9a%84+JPEG+%e5%9b%be%e5%83%8f%ef%bc%8c%e7%ba%af+JavaScript+%e5%ae%9e%e7%8e%b0%e9%9c%80%e8%a6%81+%7e850ms%ef%bc%8c%e8%80%8c+WASM+%e7%89%88%e6%9c%ac%e4%bb%85%e9%9c%80+%7e240ms%ef%bc%8c%e5%8a%a0%e9%80%9f%e6%af%94%e7%ba%a6+3.5%c3%97%e3%80%82%e9%9a%8f%e7%9d%80%e5%9b%be%e5%83%8f%e5%88%86%e8%be%a8%e7%8e%87%e6%8f%90%e5%8d%87%ef%bc%8c%e5%8a%a0%e9%80%9f%e6%af%94%e8%bf%98%e4%bc%9a%e8%bf%9b%e4%b8%80%e6%ad%a5%e5%a2%9e%e5%a4%a7%ef%bc%8c%e5%9b%a0%e4%b8%ba+WASM+%e9%81%bf%e5%85%8d%e4%ba%86+JS+%e7%9a%84+GC+%e5%81%9c%e9%a1%bf%e5%92%8c%e5%8a%a8%e6%80%81%e7%b1%bb%e5%9e%8b%e6%a3%80%e6%9f%a5%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e8.+%e5%ae%9e%e6%88%98%e4%ba%8c%ef%bc%9a%e5%9f%ba%e4%ba%8e+Wasmtime+%e7%9a%84%e6%8f%92%e4%bb%b6%e7%b3%bb%e7%bb%9f%3c%2fh2%3e%0a%0a%3cp%3e%e5%9c%a8%e6%9c%8d%e5%8a%a1%e7%ab%af%e5%9c%ba%e6%99%af%ef%bc%8cWASM+%e6%9c%80%e6%bf%80%e5%8a%a8%e4%ba%ba%e5%bf%83%e7%9a%84%e5%ba%94%e7%94%a8%e6%98%af%3cstrong%3e%e5%ae%89%e5%85%a8%e3%80%81%e5%8f%af%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd%e7%9a%84%e6%8f%92%e4%bb%b6%e7%b3%bb%e7%bb%9f%3c%2fstrong%3e%e3%80%82%e6%88%91%e4%bb%ac%e7%94%a8+Wasmtime%ef%bc%88Rust+%e5%ae%9e%e7%8e%b0%ef%bc%89%e6%9e%84%e5%bb%ba%e4%b8%80%e4%b8%aa+Markdown+%e6%b8%b2%e6%9f%93%e5%bc%95%e6%93%8e%ef%bc%8c%e5%85%81%e8%ae%b8%e7%ac%ac%e4%b8%89%e6%96%b9%e7%94%a8%e4%bb%bb%e6%84%8f%e8%af%ad%e8%a8%80%e7%bc%96%e5%86%99%e6%b8%b2%e6%9f%93%e6%8f%92%e4%bb%b6%e3%80%82%3c%2fp%3e%0a%0a%3cp%3e%3cstrong%3e%e6%8f%92%e4%bb%b6%e6%8e%a5%e5%8f%a3%e5%ae%9a%e4%b9%89%ef%bc%9a%3c%2fstrong%3e%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e%2f%2f+plugin-interface.rs%0apub+trait+RendererPlugin%3a+Send+%2b+Sync+%7b%0a++++fn+name(%26amp%3bself)+-%26gt%3b+%26amp%3bstr%3b%0a++++fn+render(%26amp%3bself%2c+markdown%3a+%26amp%3bstr)+-%26gt%3b+Result%26lt%3bString%2c+Plugin%26gt%3b%3b%0a%7d%0a%0ause+wasmtime%3a%3a*%3b%0a%0apub+fn+load_plugin(wasm_path%3a+%26amp%3bstr)+-%26gt%3b+Result%26lt%3bBox%26lt%3bdyn+RendererPlugin%26gt%3b%26gt%3b+%7b%0a++++let+engine+%3d+Engine%3a%3adefault()%3b%0a++++let+module+%3d+Module%3a%3afrom_file(%26amp%3bengine%2c+wasm_path)%3f%3b%0a++++%0a++++let+mut+store+%3d+Store%3a%3anew(%26amp%3bengine%2c+())%3b%0a++++let+instance+%3d+Instance%3a%3anew(%26amp%3bmut+store%2c+%26amp%3bmodule%2c+%26amp%3b%5b%5d)%3f%3b%0a++++%0a++++let+memory+%3d+instance.get_memory(%26amp%3bmut+store%2c+%22memory%22)%0a++++++++.ok_or(%22plugin+must+export+%27memory%27%22)%3f%3b%0a++++let+render_fn+%3d+instance.get_typed_func%3a%3a%26lt%3b(i32%2c+i32)%2c+i32%26gt%3b(%26amp%3bmut+store%2c+%22render%22)%3f%3b%0a++++%0a++++Ok(Box%3a%3anew(WasmRenderer+%7b%0a++++++++store%2c+memory%2c+render_fn%2c%0a++++%7d))%0a%7d%0a%0astruct+WASMRenderer%26lt%3b%27a%26gt%3b+%7b%0a++++store%3a+Store%26lt%3b()%26gt%3b%2c%0a++++memory%3a+Memory%2c%0a++++render_fn%3a+TypedFunc%26lt%3b(i32%2c+i32)%2c+i32%26gt%3b%2c%0a%7d%0a%0aimpl%26lt%3b%27a%26gt%3b+RendererPlugin+for+WASMRenderer%26lt%3b%27a%26gt%3b+%7b%0a++++fn+render(%26amp%3bself%2c+markdown%3a+%26amp%3bstr)+-%26gt%3b+Result%26lt%3bString%2c+Plugin%26gt%3b+%7b%0a++++++++let+bytes+%3d+markdown.as_bytes()%3b%0a++++++++let+alloc_size+%3d+bytes.len()%3b%0a++++++++%0a++++++++%2f%2f+%e5%9c%a8+WASM+%e5%86%85%e5%ad%98%e4%b8%ad%e5%88%86%e9%85%8d%e7%a9%ba%e9%97%b4%e5%b9%b6%e5%86%99%e5%85%a5%e8%be%93%e5%85%a5%e6%95%b0%e6%8d%ae%0a++++++++let+ptr+%3d+self.alloc(alloc_size)%3b%0a++++++++self.memory.write(%26amp%3bmut+self.store%2c+ptr%2c+bytes).unwrap()%3b%0a++++++++%0a++++++++%2f%2f+%e8%b0%83%e7%94%a8%e6%8f%92%e4%bb%b6%e7%9a%84+render+%e5%87%bd%e6%95%b0%0a++++++++let+result_ptr+%3d+self.render_fn.call(%26amp%3bmut+self.store%2c+(ptr+as+i32%2c+alloc_size+as+i32))%0a++++++++++++.map_err(%7ce%7c+Plugin%3a%3aRuntime(e.to_string()))%3f%3b%0a++++++++%0a++++++++%2f%2f+%e8%af%bb%e5%8f%96%e7%bb%93%e6%9e%9c%0a++++++++let+result_html+%3d+self.read_string(result_ptr+as+usize)%3b%0a++++++++Ok(result_html)%0a++++%7d%0a%7d%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3cp%3e%e5%ae%8c%e6%95%b4%e7%9a%84%e7%94%9f%e4%ba%a7%e7%ba%a7%e5%ae%9e%e7%8e%b0%e8%bf%98%e9%9c%80%e8%a6%81%e5%a4%84%e7%90%86%e5%86%85%e5%ad%98%e5%a2%9e%e9%95%bf%e3%80%81%e5%ae%9e%e4%be%8b%e9%9a%94%e7%a6%bb%e3%80%81%e7%83%ad%e6%9b%b4%e6%96%b0%e3%80%81%e8%b5%84%e6%ba%90%e9%99%90%e9%a2%9d%e7%ad%89%e9%97%ae%e9%a2%98%e3%80%82%e6%a0%b8%e5%bf%83%e5%8e%9f%e5%88%99%e6%98%af%ef%bc%9a%3cstrong%3e%e6%af%8f%e4%b8%aa%e6%8f%92%e4%bb%b6%e8%bf%90%e8%a1%8c%e5%9c%a8%e7%8b%ac%e7%ab%8b%e7%9a%84+Store+%e4%b8%ad%3c%2fstrong%3e%ef%bc%8c%e4%b8%80%e6%97%a6%e6%9f%90%e4%b8%aa%e6%8f%92%e4%bb%b6%e5%b4%a9%e6%ba%83%ef%bc%88%e5%a6%82%e8%a7%a6%e5%8f%91+OOM+%e6%88%96%e6%ad%bb%e5%be%aa%e7%8e%af%ef%bc%89%ef%bc%8c%e5%ae%bf%e4%b8%bb%e7%a8%8b%e5%ba%8f%e5%8f%af%e4%bb%a5%e9%80%9a%e8%bf%87%e7%87%83%e6%96%99%e6%9c%ba%e5%88%b6%ef%bc%88fuel+metering%ef%bc%89%e5%8f%8a%e6%97%b6%e7%bb%88%e6%ad%a2%e5%ae%83%ef%bc%8c%e4%b8%8d%e5%bd%b1%e5%93%8d%e5%85%b6%e4%bb%96%e6%8f%92%e4%bb%b6%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e9.+%e5%ae%9e%e6%88%98%e4%b8%89%ef%bc%9aWASM+%e5%ae%b9%e5%99%a8%e5%8c%96%e4%b8%8e+Docker%3c%2fh2%3e%0a%0a%3cp%3e%e4%bb%8e+Docker+Desktop+4.25%2b+%e5%bc%80%e5%a7%8b%ef%bc%8c%e5%ae%98%e6%96%b9%e6%94%af%e6%8c%81+%3ccode%3e--runtime%3dio.containerd.wasmtime.v1%3c%2fcode%3e+%e6%a0%87%e5%bf%97%ef%bc%8c%e5%b0%86+WASM+%e6%a8%a1%e5%9d%97%e4%bd%9c%e4%b8%ba%e5%ae%b9%e5%99%a8%e8%bf%90%e8%a1%8c%e3%80%82%e4%b8%8e%e4%bc%a0%e7%bb%9f%e5%ae%b9%e5%99%a8%e7%9b%b8%e6%af%94%ef%bc%8cWASM+%e5%ae%b9%e5%99%a8%e6%9c%89%e4%b8%89%e5%a4%a7%e4%bc%98%e5%8a%bf%ef%bc%9a%3c%2fp%3e%0a%0a%3ctable%3e%0a%3cthead%3e%3ctr%3e%3cth%3e%e7%bb%b4%e5%ba%a6%3c%2fth%3e%3cth%3eDocker+%e5%ae%b9%e5%99%a8%ef%bc%88OCI%ef%bc%89%3c%2fth%3e%3cth%3eWASM+%e5%ae%b9%e5%99%a8%3c%2fth%3e%3c%2ftr%3e%3c%2fthead%3e%0a%3ctbody%3e%0a%3ctr%3e%3ctd%3e%e5%90%af%e5%8a%a8%e9%80%9f%e5%ba%a6%3c%2ftd%3e%3ctd%3e%7e200-500ms%3c%2ftd%3e%3ctd%3e%7e1-5ms%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e9%95%9c%e5%83%8f%e5%a4%a7%e5%b0%8f%3c%2ftd%3e%3ctd%3e%e9%80%9a%e5%b8%b8+50-200MB%3c%2ftd%3e%3ctd%3e%e9%80%9a%e5%b8%b8+0.5-5MB%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e9%9a%94%e7%a6%bb%e7%ba%a7%e5%88%ab%3c%2ftd%3e%3ctd%3enamespace+%2b+cgroup%3c%2ftd%3e%3ctd%3e%e7%ba%bf%e6%80%a7%e5%86%85%e5%ad%98%e6%b2%99%e7%ae%b1%ef%bc%88%e6%9b%b4%e4%b8%a5%e6%a0%bc%ef%bc%89%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e5%86%85%e6%a0%b8%e4%be%9d%e8%b5%96%3c%2ftd%3e%3ctd%3e%e9%9c%80%e8%a6%81+Linux+%e5%86%85%e6%a0%b8%3c%2ftd%3e%3ctd%3e%e6%97%a0%ef%bc%88%e7%ba%af%e7%94%a8%e6%88%b7%e6%80%81%e8%bf%90%e8%a1%8c%ef%bc%89%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af%3c%2ftd%3e%3ctd%3e%e9%80%9a%e7%94%a8%e6%9c%8d%e5%8a%a1%3c%2ftd%3e%3ctd%3e%e7%9f%ad%e4%bb%bb%e5%8a%a1%e3%80%81%e8%ae%a1%e7%ae%97%e5%87%bd%e6%95%b0%e3%80%81%e6%95%b0%e6%8d%ae%e5%a4%84%e7%90%86%3c%2ftd%3e%3c%2ftr%3e%0a%3c%2ftbody%3e%0a%3c%2ftable%3e%0a%0a%3cp%3e%3cstrong%3e%e8%bf%90%e8%a1%8c+WASM+%e5%ae%b9%e5%99%a8%e7%9a%84%e5%ae%8c%e6%95%b4%e6%b5%81%e7%a8%8b%ef%bc%9a%3c%2fstrong%3e%3c%2fp%3e%0a%0a%3cpre%3e%3ccode%3e%23+1.+%e7%bc%96%e5%86%99+Rust+%e2%86%92+WASM+%e5%ba%94%e7%94%a8%0a%23+src%2fmain.rs%0afn+main()+%7b%0a++++let+args%3a+Vec%26lt%3bString%26gt%3b+%3d+std%3a%3aenv%3a%3aargs().collect()%3b%0a++++let+input+%3d+std%3a%3aio%3a%3aread_to_string(std%3a%3aio%3a%3astdin()).unwrap()%3b%0a++++println!(%22WASM+container+received%3a+%7b%7d%22%2c+input)%3b%0a%7d%0a%0a%23+Cargo.toml+%e9%9c%80%e8%a6%81%e6%b7%bb%e5%8a%a0+wasm32-wasi+target%0a%23+cargo+build+--target+wasm32-wasi+--release%0a%0a%23+2.+%e4%bd%bf%e7%94%a8+wasm-to-oci+%e5%b7%a5%e5%85%b7%e6%8e%a8%e9%80%81%e5%88%b0+registry%0awasm-to-oci+push+target%2fwasm32-wasi%2frelease%2fmy-app.wasm+%5c%0a++registry.example.com%2fmy-wasm-app%3av1%0a%0a%23+3.+%e4%bd%bf%e7%94%a8+Docker+%e8%bf%90%e8%a1%8c%0adocker+run+--runtime%3dio.containerd.wasmtime.v1+%5c%0a++--platform+wasi%2fwasm+%5c%0a++registry.example.com%2fmy-wasm-app%3av1+%5c%0a++echo+%22Hello+from+WASM%22%3c%2fcode%3e%3c%2fpre%3e%0a%0a%3ch2%3e10.+%e6%80%a7%e8%83%bd%e6%b7%b1%e5%ba%a6%e5%9f%ba%e5%87%86%ef%bc%9aWASM+vs+Native+vs+JavaScript%3c%2fh2%3e%0a%0a%3cp%3e%e4%b8%ba%e4%ba%86%e5%87%86%e7%a1%ae%e8%af%84%e4%bc%b0+WASM+%e7%9a%84%e6%80%a7%e8%83%bd%e6%b0%b4%e4%bd%8d%ef%bc%8c%e6%88%91%e4%bb%ac%e8%ae%be%e8%ae%a1%e4%ba%86%e4%b8%80%e7%bb%84%e5%9f%ba%e5%87%86%e6%b5%8b%e8%af%95%ef%bc%88M1+MacBook+Pro%2c+Rails+7.1%2c+Node.js+22.1%ef%bc%89%ef%bc%9a%3c%2fp%3e%0a%0a%3ctable%3e%0a%3cthead%3e%3ctr%3e%3cth%3e%e5%9f%ba%e5%87%86%e6%b5%8b%e8%af%95%3c%2fth%3e%3cth%3eJavaScript+(ms)%3c%2fth%3e%3cth%3eWASM+(ms)%3c%2fth%3e%3cth%3eNative+C+(ms)%3c%2fth%3e%3cth%3eWASM%2fNative+%e6%af%94%e5%80%bc%3c%2fth%3e%3c%2ftr%3e%3c%2fthead%3e%0a%3ctbody%3e%0a%3ctr%3e%3ctd%3e%e7%9f%a9%e9%98%b5%e4%b9%98%e6%b3%95+(1024%c3%971024)%3c%2ftd%3e%3ctd%3e1%2c890%3c%2ftd%3e%3ctd%3e320%3c%2ftd%3e%3ctd%3e305%3c%2ftd%3e%3ctd%3e1.05%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eSHA-256+%e5%93%88%e5%b8%8c+(100MB+%e6%95%b0%e6%8d%ae)%3c%2ftd%3e%3ctd%3e2%2c450%3c%2ftd%3e%3ctd%3e410%3c%2ftd%3e%3ctd%3e385%3c%2ftd%3e%3ctd%3e1.06%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eBrotli+%e5%8e%8b%e7%bc%a9%3c%2ftd%3e%3ctd%3e3%2c200%3c%2ftd%3e%3ctd%3e680%3c%2ftd%3e%3ctd%3e620%3c%2ftd%3e%3ctd%3e1.10%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eJSON+%e5%ba%8f%e5%88%97%e5%8c%96+(1M+%e5%af%b9%e8%b1%a1)%3c%2ftd%3e%3ctd%3e850%3c%2ftd%3e%3ctd%3e790%3c%2ftd%3e%3ctd%3e310%3c%2ftd%3e%3ctd%3e2.55%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e9%80%92%e5%bd%92%e6%96%90%e6%b3%a2%e9%82%a3%e5%a5%91(40)%3c%2ftd%3e%3ctd%3e1%2c200%3c%2ftd%3e%3ctd%3e180%3c%2ftd%3e%3ctd%3e165%3c%2ftd%3e%3ctd%3e1.09%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e5%9b%be%e5%83%8f%e6%a8%a1%e7%b3%8a+(4K+RGB)%3c%2ftd%3e%3ctd%3e4%2c500%3c%2ftd%3e%3ctd%3e780%3c%2ftd%3e%3ctd%3e710%3c%2ftd%3e%3ctd%3e1.10%3c%2ftd%3e%3c%2ftr%3e%0a%3c%2ftbody%3e%0a%3c%2ftable%3e%0a%0a%3cp%3e%e7%bb%93%e8%ae%ba%e9%9d%9e%e5%b8%b8%e6%b8%85%e6%99%b0%ef%bc%9a%3cstrong%3e%e7%ba%af%e8%ae%a1%e7%ae%97%e5%af%86%e9%9b%86%e5%9e%8b%e4%bb%bb%e5%8a%a1%e4%b8%ad%ef%bc%8cWASM+%e5%8f%af%e4%bb%a5%e8%be%be%e5%88%b0+Native+C+%e6%80%a7%e8%83%bd%e7%9a%84+90-95%25%3c%2fstrong%3e%ef%bc%8c%e8%bf%9c%e8%83%9c%e4%ba%8e+JavaScript%e3%80%82%e4%bd%86%e6%b6%89%e5%8f%8a%e5%a4%a7%e9%87%8f+JS+%e2%86%94+WASM+%e8%b7%a8%e8%be%b9%e7%95%8c%e8%b0%83%e7%94%a8%e5%92%8c%e6%95%b0%e6%8d%ae%e5%ba%8f%e5%88%97%e5%8c%96%e6%97%b6%ef%bc%8c%e6%80%a7%e8%83%bd%e4%bc%98%e5%8a%bf%e4%bc%9a%e8%a2%ab+FFI+%e5%bc%80%e9%94%80%e6%8a%b5%e6%b6%88%e3%80%82%e4%bc%98%e5%8c%96%e7%ad%96%e7%95%a5%e6%98%af%e5%b0%bd%e9%87%8f%e4%bd%bf%e7%94%a8%e6%89%b9%e9%87%8f%e6%95%b0%e6%8d%ae%e4%bc%a0%e8%be%93%ef%bc%8c%e5%87%8f%e5%b0%91%e8%b7%a8%e8%be%b9%e7%95%8c%e8%b0%83%e7%94%a8%e6%ac%a1%e6%95%b0%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e11.+WASM+%e7%94%9f%e6%80%81%e5%85%b3%e9%94%ae%e9%a1%b9%e7%9b%ae%e9%80%9f%e6%9f%a5%3c%2fh2%3e%0a%0a%3cp%3e%e4%bb%a5%e4%b8%8b%e4%b8%ba%e5%bd%93%e5%89%8d+WASM+%e7%94%9f%e6%80%81%e4%b8%ad%e6%9c%80%e6%b4%bb%e8%b7%83%e7%9a%84%e9%a1%b9%e7%9b%ae%ef%bc%8c%e8%a6%86%e7%9b%96%e8%bf%90%e8%a1%8c%e6%97%b6%e3%80%81%e5%b7%a5%e5%85%b7%e9%93%be%e5%92%8c%e4%b8%8a%e5%b1%82%e6%a1%86%e6%9e%b6%ef%bc%9a%3c%2fp%3e%0a%0a%3ctable%3e%0a%3cthead%3e%3ctr%3e%3cth%3e%e7%b1%bb%e5%88%ab%3c%2fth%3e%3cth%3e%e9%a1%b9%e7%9b%ae%3c%2fth%3e%3cth%3e%e8%af%b4%e6%98%8e%3c%2fth%3e%3c%2ftr%3e%3c%2fthead%3e%0a%3ctbody%3e%0a%3ctr%3e%3ctd%3eRuntime%3c%2ftd%3e%3ctd%3eWasmtime%3c%2ftd%3e%3ctd%3eBytecode+Alliance+%e5%87%ba%e5%93%81%ef%bc%8cRust+%e5%ae%9e%e7%8e%b0%ef%bc%8cWASI+%e6%a0%87%e5%87%86%e6%8e%a8%e5%8a%a8%e8%80%85%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eRuntime%3c%2ftd%3e%3ctd%3eWasmer%3c%2ftd%3e%3ctd%3e%e6%9c%80%e5%85%a8%e7%9a%84%e7%bc%96%e8%af%91%e5%99%a8%e5%90%8e%e7%ab%af%e9%80%89%e6%8b%a9%ef%bc%88Singlepass%2fLLVM%2fCranelift%ef%bc%89%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3eRuntime%3c%2ftd%3e%3ctd%3eWAMR%3c%2ftd%3e%3ctd%3eIntel+%e5%87%ba%e5%93%81%ef%bc%8c%e4%b8%93%e4%b8%ba%e5%b5%8c%e5%85%a5%e5%bc%8f%e8%ae%be%e8%ae%a1%e7%9a%84%e8%bd%bb%e9%87%8f%e7%ba%a7%e8%bf%90%e8%a1%8c%e6%97%b6%ef%bc%88%26lt%3b100KB%ef%bc%89%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e5%b7%a5%e5%85%b7%e9%93%be%3c%2ftd%3e%3ctd%3ewasm-pack%3c%2ftd%3e%3ctd%3eRust+%e2%86%92+WASM+%e7%9a%84%e4%b8%80%e7%ab%99%e5%bc%8f%e6%9e%84%e5%bb%ba%e5%b7%a5%e5%85%b7%ef%bc%8c%e5%90%ab%e6%b5%8b%e8%af%95%e6%94%af%e6%8c%81%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e5%b7%a5%e5%85%b7%e9%93%be%3c%2ftd%3e%3ctd%3ewit-bindgen%3c%2ftd%3e%3ctd%3eWIT+%e2%86%92+%e5%a4%9a%e8%af%ad%e8%a8%80%e7%bb%91%e5%ae%9a%e7%94%9f%e6%88%90%e5%99%a8%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e5%b7%a5%e5%85%b7%e9%93%be%3c%2ftd%3e%3ctd%3ejco%3c%2ftd%3e%3ctd%3eJavaScript+%e7%bb%84%e4%bb%b6%e8%bd%ac%e6%8d%a2%e5%99%a8%ef%bc%8c%e8%ae%a9+.wasm+%e7%9b%b4%e6%8e%a5%e5%9c%a8+JS+%e4%b8%ad+import%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e6%a1%86%e6%9e%b6%3c%2ftd%3e%3ctd%3ewasmCloud%3c%2ftd%3e%3ctd%3eNATS+%e9%a9%b1%e5%8a%a8%e7%9a%84+WASM+Actor+%e6%a1%86%e6%9e%b6%ef%bc%8c%e5%88%86%e5%b8%83%e5%bc%8f%e5%ba%94%e7%94%a8%e7%bc%96%e6%8e%92%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e6%a1%86%e6%9e%b6%3c%2ftd%3e%3ctd%3eSpin%3c%2ftd%3e%3ctd%3eFermyon+%e5%87%ba%e5%93%81%e7%9a%84%e5%be%ae%e6%9c%8d%e5%8a%a1%e6%a1%86%e6%9e%b6%ef%bc%8c%e5%9f%ba%e4%ba%8e+Wasmtime%3c%2ftd%3e%3c%2ftr%3e%0a%3ctr%3e%3ctd%3e%e6%a1%86%e6%9e%b6%3c%2ftd%3e%3ctd%3ewasmEdge%3c%2ftd%3e%3ctd%3eCNCF+%e9%a1%b9%e7%9b%ae%ef%bc%8c%e6%94%af%e6%8c%81+WASM+%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%9a%84%e8%be%b9%e7%bc%98%e8%ae%a1%e7%ae%97%e5%b9%b3%e5%8f%b0%3c%2ftd%3e%3c%2ftr%3e%0a%3c%2ftbody%3e%0a%3c%2ftable%3e%0a%0a%3ch2%3e12.+%e6%80%bb%e7%bb%93%ef%bc%9aWASM+%e7%9a%84%e4%b8%89%e4%b8%aa%e6%bc%94%e8%bf%9b%e6%96%b9%e5%90%91%3c%2fh2%3e%0a%0a%3cp%3e%e5%9b%9e%e9%a1%be+WASM+%e4%bb%8e+2017+%e5%b9%b4%e6%ad%a3%e5%bc%8f%e5%8f%91%e5%b8%83%e8%87%b3%e4%bb%8a%e7%9a%84%e5%8f%91%e5%b1%95%e8%bd%a8%e8%bf%b9%ef%bc%8c%e5%8f%af%e4%bb%a5%e7%9c%8b%e5%88%b0%e4%b8%89%e4%b8%aa%e6%b8%85%e6%99%b0%e7%9a%84%e6%bc%94%e8%bf%9b%e6%96%b9%e5%90%91%ef%bc%9a%3c%2fp%3e%0a%0a%3cul%3e%0a%3cli%3e%3cstrong%3e%e4%bb%8e%e6%b5%8f%e8%a7%88%e5%99%a8%e5%88%b0%e9%80%9a%e7%94%a8%e8%bf%90%e8%a1%8c%e6%97%b6%3c%2fstrong%3e%ef%bc%9aWASI+%e6%a0%87%e5%87%86%e7%9a%84%e6%88%90%e7%86%9f%e8%ae%a9+WASM+%e8%b5%b0%e5%87%ba%e6%b5%8f%e8%a7%88%e5%99%a8%ef%bc%8c%e8%bf%9b%e5%85%a5%e6%9c%8d%e5%8a%a1%e7%ab%af%e3%80%81%e8%be%b9%e7%bc%98%e8%ae%a1%e7%ae%97%e3%80%81IoT%e3%80%81%e5%8c%ba%e5%9d%97%e9%93%be%e7%ad%89%e5%9c%ba%e6%99%af%e3%80%82%e6%9c%aa%e6%9d%a5+5+%e5%b9%b4%ef%bc%8cWASM+%e5%8f%af%e8%83%bd%e6%88%90%e4%b8%ba%e4%bb%85%e6%ac%a1%e4%ba%8e+Docker+%e5%ae%b9%e5%99%a8%e7%9a%84%e7%ac%ac%e4%ba%8c%e5%a4%a7%e8%bf%90%e8%a1%8c%e6%97%b6%e6%8a%bd%e8%b1%a1%3c%2fli%3e%0a%3cli%3e%3cstrong%3e%e4%bb%8e%e5%8d%95%e6%a8%a1%e5%9d%97%e5%88%b0%e7%bb%84%e4%bb%b6%e7%94%9f%e6%80%81%3c%2fstrong%3e%ef%bc%9aComponent+Model+%e5%92%8c+WIT+%e5%b0%86%e8%a7%a3%e5%86%b3%22%e5%a4%9a%e8%af%ad%e8%a8%80%e6%a8%a1%e5%9d%97%e7%bb%84%e5%90%88%22%e7%9a%84%e9%9a%be%e9%a2%98%ef%bc%8c%e8%af%9e%e7%94%9f%e7%9c%9f%e6%ad%a3%e6%84%8f%e4%b9%89%e4%b8%8a%e7%9a%84+WASM+%e5%be%ae%e6%9c%8d%e5%8a%a1%e7%94%9f%e6%80%81%e3%80%82wit-bindgen+%2b+jco+%e5%8f%af%e4%bb%a5%e8%ae%a9+Python+%e5%86%99%e7%9a%84%e6%a8%a1%e5%9d%97%e7%9b%b4%e6%8e%a5%e8%a2%ab+TypeScript+%e8%b0%83%e7%94%a8%3c%2fli%3e%0a%3cli%3e%3cstrong%3e%e4%bb%8e+simd128+%e5%88%b0%e5%a4%9a%e7%ba%bf%e7%a8%8b%e5%b9%b6%e8%a1%8c%3c%2fstrong%3e%ef%bc%9a%e7%ba%bf%e7%a8%8b%e6%8f%90%e6%a1%88%ef%bc%88shared-everything+threads%ef%bc%89%e5%92%8c+GC+%e6%8f%90%e6%a1%88%e7%9a%84%e6%8e%a8%e8%bf%9b%ef%bc%8c%e5%b0%86%e4%bd%bf+WASM+%e8%83%bd%e5%a4%9f%e6%89%bf%e8%bd%bd%e6%9b%b4%e5%a4%8d%e6%9d%82%e7%9a%84%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af%ef%bc%8c%e5%8c%85%e6%8b%ac%e8%bf%90%e8%a1%8c+Python%e3%80%81Ruby+%e7%ad%89%e5%8a%a8%e6%80%81%e8%af%ad%e8%a8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e8%a7%a3%e9%87%8a%e5%99%a8%3c%2fli%3e%0a%3c%2ful%3e%0a%0a%3cp%3e%e5%a6%82%e6%9e%9c%e8%af%b4+Docker+%e8%a7%a3%e5%86%b3%e4%ba%86%22%e6%89%93%e5%8c%85%e5%92%8c%e5%88%86%e5%8f%91%22%e7%9a%84%e9%97%ae%e9%a2%98%ef%bc%8c%e9%82%a3+WASM+%e6%ad%a3%e5%9c%a8%e8%a7%a3%e5%86%b3%22%e5%ae%89%e5%85%a8%e5%92%8c%e9%80%9a%e7%94%a8%22%e7%9a%84%e9%97%ae%e9%a2%98%e2%80%94%e2%80%94%e4%b8%80%e4%b8%aa%e4%b8%8d%e9%9c%80%e8%a6%81%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e3%80%81%e4%b8%8d%e9%9c%80%e8%a6%81+root+%e6%9d%83%e9%99%90%e3%80%81%e6%b2%99%e7%ae%b1%e7%b2%92%e5%ba%a6%e7%bb%86%e5%88%b0%e5%87%bd%e6%95%b0%e7%ba%a7%e5%88%ab%e7%9a%84%e6%89%a7%e8%a1%8c%e6%b2%99%e7%ae%b1%e3%80%82%e8%bf%99%e5%8f%af%e8%83%bd%e6%98%af%e4%ba%91%e8%ae%a1%e7%ae%97%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd%e7%9a%84%e4%b8%8b%e4%b8%80%e7%ab%99%e3%80%82%3c%2fp%3e%0a%0a%3ch2%3e%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99%3c%2fh2%3e%0a%0a%3cul%3e%0a%3cli%3e%3ca+href%3d%22https%3a%2f%2fwebassembly.org%2fspecs%2f%22%3eWebAssembly+Core+Specification+v2.0%3c%2fa%3e%3c%2fli%3e%0a%3cli%3e%3ca+href%3d%22https%3a%2f%2fgithub.com%2fbytecodealliance%2fwasmtime%22%3eWasmtime+%e5%ae%98%e6%96%b9%e6%96%87%e6%a1%a3%3c%2fa%3e%3c%2fli%3e%0a%3cli%3e%3ca+href%3d%22https%3a%2f%2fwasi.dev%2f%22%3eWASI+Preview2+Specification%3c%2fa%3e%3c%2fli%3e%0a%3cli%3e%3ca+href%3d%22https%3a%2f%2fcomponent-model.bytecodealliance.org%2f%22%3eComponent+Model+%e8%ae%be%e8%ae%a1%e6%96%87%e6%a1%a3%3c%2fa%3e%3c%2fli%3e%0a%3cli%3e%3ca+href%3d%22https%3a%2f%2fblog.sunfishcode.online%2f%22%3eWASM+%e7%94%9f%e6%80%81%e6%8a%80%e6%9c%af%e5%8d%9a%e5%ae%a2%e7%b2%be%e9%80%89%3c%2fa%3e%3c%2fli%3e%0a%3c%2ful%3e
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部