WebAssembly
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017å¹´10æ.
* Some parts of this feature may have varying levels of support.
WebAssembly 㯠JavaScript ã®ãªãã¸ã§ã¯ãã§ã WebAssembly ã«é¢ãããã¹ã¦ã®æ©è½ã®åå空éã®å½¹å²ããã¾ãã
ä»ã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã¨ã¯ç°ãªãã WebAssembly ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯ããã¾ãã (颿°ãªãã¸ã§ã¯ãã§ã¯ããã¾ãã) ãæ°å¦ã®å®æ°ã颿°ã®åå空éã§ãã Math ã ãå½éåã®ã³ã³ã¹ãã©ã¯ã¿ã¼ããã®ä»ã®è¨èªãæèãã颿°ããã® Intl ã¨åæ§ã®ãã®ã§ãã
æ¦è¦
WebAssembly ãªãã¸ã§ã¯ãã®ä¸»ãªç¨éã¯æ¬¡ã®ã¨ããã§ãã
WebAssembly.instantiate()颿°ãç¨ãã WebAssembly ã³ã¼ãã®èªã¿è¾¼ã¿ãWebAssembly.Memory()/WebAssembly.Table()ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ããæ°ããã¡ã¢ãªã¼ããã¼ãã«ã¤ã³ã¹ã¿ã³ã¹ã®çæãWebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError()ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãããWebAssembly ã§çºçããã¨ã©ã¼ã®å¦çããæ©è½ã®æä¾ã
ã³ã³ã¹ãã©ã¯ã¿ã¼ããããã£
WebAssembly.CompileError()-
WebAssembly ã®ãã³ã¼ãã¾ãã¯æ¤è¨¼ä¸ã®ã¨ã©ã¼ã示ãã¾ãã
WebAssembly.Global()-
ã°ãã¼ãã«å¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ã表ãã JavaScript ããã¢ã¯ã»ã¹å¯è½ã§ã 1 ã¤ä»¥ä¸ã®
WebAssembly.Moduleã¤ã³ã¹ã¿ã³ã¹ã®éã§ã¤ã³ãã¼ã/ã¨ã¯ã¹ãã¼ãå¯è½ã§ããããã«ãããè¤æ°ã®ã¢ã¸ã¥ã¼ã«ãåçãªã³ã¯ãããã¨ãã§ãã¾ãã WebAssembly.Instance()-
ã¹ãã¼ããã«ã§ãå®è¡å¯è½ãª WebAssembly.Module ã®ã¤ã³ã¹ã¿ã³ã¹ã§ãã
WebAssembly.LinkError()-
(颿°éå§å¾ã®ãã©ããã§ã¯ãªã) ã¢ã¸ã¥ã¼ã«ã®åæåæã«çºçããã¨ã©ã¼ã示ãã¾ãã
WebAssembly.Memory()-
bufferããããã£ãå¯å¤é·ã® ArrayBuffer ã§ãããããã WebAssembly ã®Instanceããã¢ã¯ã»ã¹å¯è½ãªã¡ã¢ãªã¼ã®ãã¤ãåãä¿æãã¦ãã¾ãã WebAssembly.Module()-
ã¹ãã¼ãã¬ã¹ã® WebAssembly ã®ã³ã¼ãã§ããããã©ã¦ã¶ã¼ã§ã³ã³ãã¤ã«ãããå¹ççã«ã¯ã¼ã«ã¼ã¨å ±æãããã¨ãã§ããè¤æ°åã¤ã³ã¹ã¿ã³ã¹åãããã¨ãã§ãã¾ãã
WebAssembly.RuntimeError()-
WebAssembly ããã©ãããæå®ãããã³ã«ä¾å¤ã¨ãã¦çºçããã¨ã©ã¼åã§ãã
WebAssembly.Table()-
WebAssembly ã®ãã¼ãã«ã表ãé åé¢¨ã®æ§é ã§ã颿°ã®åç §ãä¿æãã¾ãã
éçã¡ã½ãã
WebAssembly.instantiate()-
WebAssembly ã³ã¼ããã³ã³ãã¤ã«ãã¤ã³ã¹ã¿ã³ã¹åããããã®ä¸»è¦ãª API ã§ã
Moduleã¨ããã®æåã®Instanceãè¿ãã¾ãã WebAssembly.instantiateStreaming()-
ã½ã¼ã¹ã®ã¹ããªã¼ã ããç´æ¥ WebAssembly ã¢ã¸ã¥ã¼ã«ãã³ã³ãã¤ã«ãã¤ã³ã¹ã¿ã³ã¹åãã
Moduleã¨ããã®æåã®Instanceãè¿ãã¾ãã WebAssembly.compile()-
WebAssembly.Moduleãç¨ã㦠WebAssembly ãã¤ããªã¼ã³ã¼ãããã³ã³ãã¤ã«ãã¾ããã¤ã³ã¹ã¿ã³ã¹åã¯å¥ã¹ãããã¨ãã¦åé¢ããã¾ãã WebAssembly.compileStreaming()-
ã½ã¼ã¹ã®ã¹ããªã¼ã ããç´æ¥
WebAssembly.Moduleã«ã³ã³ãã¤ã«ãã¾ããã¤ã³ã¹ã¿ã³ã¹åã¯å¥ã¹ãããã¨ãã¦åé¢ããã¾ãã WebAssembly.validate()-
WebAssembly ãã¤ããªã¼ã³ã¼ãã®åä»ãé åãæ¤è¨¼ãããã¤ãåãæå¹ãª WebAssembly ã³ã¼ãã (
true) å¦ã (false) ãè¿ãã¾ãã
ä¾
>.wasm ã¢ã¸ã¥ã¼ã«ãèªã¿è¾¼ã¿ãã³ã³ãã¤ã«ããã¤ã³ã¹ã¿ã³ã¹åãã
次ã®ä¾ (GitHub ä¸ã® instantiate-streaming.html ã®ãã¢ã¨ãåä½ä¾ãåç
§) ã¯ãåºç¤ã¨ãªãã½ã¼ã¹ãã .wasm ã¢ã¸ã¥ã¼ã«ãç´æ¥ã¹ããªã¼ãã³ã°ããã³ã³ãã¤ã«ãã¦ã¤ã³ã¹ã¿ã³ã¹åãã ResultObject ã§å±¥è¡ããããããã¹ãè¿ãã¾ãã instantiateStreaming() 颿°ã¯ Response ãªãã¸ã§ã¯ãã®ãããã¹ãåãä»ããã®ã§ã fetch() ã®å¼ã³åºãçµæãç´æ¥æ¸¡ãã¨ãå±¥è¡ãããã¨ãã«ã¬ã¹ãã³ã¹ã颿°ã«æ¸¡ããã¨ãã§ãã¾ãã
var importObject = { imports: { imported_func: (arg) => console.log(arg) } };
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
ãããã ResultObject ã® instance ã¡ã³ãã¼ã«ã¢ã¯ã»ã¹ããã¨ãå¼ã³åºã対象ã®ã¨ã¯ã¹ãã¼ãããã颿°ãå
¥ã£ã¦ãã¾ãã
仿§æ¸
| Specification |
|---|
| WebAssembly JavaScript Interface> # webassembly-namespace> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- WebAssembly æ¦è¦ãã¼ã¸
- WebAssembly ã®æ¦å¿µ
- WebAssembly JavaScript API ã®ä½¿ç¨