WebAssembly
WebAssembly æ¯ä¸ç¨®æ°çä½éç¨å¼èªè¨ï¼å¯å¨ä»æ¥çç¶²é ç覽å¨ä¸è¢«å·è¡ââ宿¯ä½éçé¡çµåèªè¨ï¼å ·æå´è¬¹çäºé²ä½æ ¼å¼ï¼è½ä»¥æ¥è¿åçæç¨ç¨å¼çæè½å·è¡ï¼ä¸¦æä¾å¦ C/C++ çèªè¨ä¸åæ§å»ºç®æ¨ï¼ä½¿å®åè½å¨ Web ä¸è¢«å·è¡ãä»ä¹è¢«è¨è¨çºå¯è JavaScript å ±åï¼å è¨±å ©è ä¸åå·¥ä½ã
ç°¡èè¨ä¹
WebAssembly å°æ¼ç¶²è·¯å¹³å°èè¨å ·ææ¥µå¤§çæç¾©ââ宿ä¾äºä¸ç¨®æ¹å¼ï¼ä½¿å¾é£äºä»¥å種èªè¨ç·¨å¯«çç¨å¼é½è½ä»¥æ¥è¿åççéåº¦æ¼ Web ç°å¢ä¸å·è¡ï¼å¨éæ¢ä»¶ä¸ï¼å åç¡æ³ä»¥æ¤ç¨®æ¹å¼éä½çç¨æ¶ç«¯è»é«çè½å¨ Web ä¸è¢«å·è¡ã
WebAssembly 被è¨è¨ä¾è JavaScript ååå·¥ä½ââèç± WebAssembly ç JavaScript APIï¼ä½ å¯ä»¥æ WebAssembly 模çµè¼å ¥è³ä¸å JavaScript æç¨ç¨å¼ï¼ä¸¦å¨å ©è éå ±äº«åè½ãéå è¨±ä½ å¨å䏿ç¨ç¨å¼å §å½æ§å°ç¼æ® WebAssembly ç髿è½å¨ååæå ¼é¡§ JavaScript ç表éåèé«éæ´»æ§ï¼å³ä¾¿ä½ å¯è½ä¸ç¥éå¦ä½ç·¨å¯« WebAssembly ç¨å¼ç¢¼ã
è䏿´æ£çæ¯ï¼éæ¯ç± W3C WebAssembly Working Group å Community Group éç¼çä¸é ç¶²è·¯æ¨æºï¼ä¸¦ä¹å¾å°ä¾èªå大主è¦ç覽å¨å» åçç©æ¥µåèã
æå
- WebAssembly æ¦å¿µ
-
èç±é±è® WebAssembly å¾çé«éæ¦å¿µéå§ââä¹å°±æ¯èªªï¼å®çºä½æ¯å¦æ¤æç¨ï¼æ¯å¦ä½ç¸å®¹ç¶²è·¯å¹³å°ï¼åå ¶ä»ï¼ï¼åå¦ä½ä½¿ç¨å®ã
- å¾ C/C++ ç·¨è¯ WebAssembly
-
ç¶ä½ ä½¿ç¨ C/C++ 編寫ç¨å¼å¾ï¼ä½ å¯ä»¥ä½¿ç¨è«¸å¦ Emscripten çå·¥å ·å°å ¶ç·¨è¯çº .wasm æä»¶ãè®æåçç宿¯å¦ä½å¯¦ä½çã
- å¾ç¾æç C 模çµç·¨è¯çº WebAssembly
-
WebAssembly æ ¸å¿çä½¿ç¨æ¡ä¾æ¯ææè½è®éç¼è å¨ Web ç°å¢ä¸ä½¿ç¨ç¾å C ççæ ç°å¢ã
- å° Rust ç¨å¼ç¢¼ç·¨è¯çº WebAssembly
-
ä½ å¯ä»¥å° Rust ç·¨è¯çº WebAssemblyï¼æ¬æç¨å°å¸¶ä½ äºè§£å° Rust é ç®ç·¨è¯çº wasm 並å¨ç¾æç Web æç¨ç¨åºä¸ä½¿ç¨å®æéçææç¥èã
- è¼å ¥ä¸¦éè¡ WebAssembly ç¨å¼ç¢¼
-
æ¬æä»ç´¹å¦ä½ééæ Fetch æ XHR API è WebAssembly JavaScript API çµåèµ·ä¾ãç·¨è¯å實ä¾å .wasm æä»¶ã
- ä½¿ç¨ WebAssembly ç JavaScript API
-
ç¶ä½ è¼å ¥ä¸å .wasm 模çµå¾ï¼ä½ å°±ç¨å°å®ã卿¬æä¸å°åä½ å±ç¤ºå¦ä½éé WebAssembly ç JavaScript API ä¾ä½¿ç¨ WebAssemblyã
- å°åº WebAssembly 彿¸
-
被å°åºç WebAssembly 彿¸æ¯ç¨ JavaScript ä¾è¡¨ç¤º WebAssembly 彿¸çå°è£ï¼ä¸¦å è¨±å¾ JavaScript èª¿ç¨ WebAssembly åå§ç¢¼ãæ¬æå°æè¿°ä»åã
- äºè§£ WebAssembly çæä»¶æ ¼å¼
-
æ¬æä»ç´¹äº .wasm çæä»¶æ ¼å¼ã鿝å¨é²è¡åµé¯æç±ç覽å¨éç¼å·¥å ·ä¸å±ç¾åº .wasm 模çµçä¸ç¨®ä½éæä»¶æ ¼å¼ã
- æ WebAssembly æä»¶æ ¼å¼è½çº wasm
-
æ¬ææä¾ä¸åå¦ä½æä»¥ WebAssembly ç·¨å¯«çæ¨¡çµè½æçºäºé²ä½ç .wasm æä»¶æ ¼å¼çæåã
API åè
- WebAssembly åèæä»¤
-
WebAssembly éç®åç¸éç說ææä»¶ï¼å §å«äºåå¼ç¯ä¾ã
- WebAssembly JavaScript ä»é¢
-
該ç©ä»¶å ç¶ææè WebAssembly ç¸éçåè½çå½å空éã
WebAssembly.Global()-
A
WebAssembly.Globalobject represents a global variable instance, accessible from both JavaScript and importable/exportable across one or moreWebAssembly.Moduleinstances. This allows dynamic linking of multiple modules. WebAssembly.Module()-
A
WebAssembly.Moduleobject contains stateless WebAssembly code that has already been compiled by the browser and can be efficiently shared with Workers, and instantiated multiple times. WebAssembly.Instance()-
A
WebAssembly.Instanceobject is a stateful, executable instance of aModule.Instanceobjects contain all the Exported WebAssembly functions that allow calling into WebAssembly code from JavaScript. WebAssembly.instantiateStreaming()-
The
WebAssembly.instantiateStreaming()function is the primary API for compiling and instantiating WebAssembly code, returning both aModuleand its firstInstance. WebAssembly.Memory()-
A
WebAssembly.Memoryobject is a resizableArrayBufferthat holds the raw bytes of memory accessed by anInstance. WebAssembly.Table()-
A
WebAssembly.Tableobject is a resizable typed array of opaque values, like function references, that are accessed by anInstance. WebAssembly.CompileError()-
Creates a new WebAssembly
CompileErrorobject. WebAssembly.LinkError()-
Creates a new WebAssembly
LinkErrorobject. WebAssembly.RuntimeError()-
Creates a new WebAssembly
RuntimeErrorobject.
ç¯æ¬
- WASMSobel
- åèæåç webassembly-ç¯ä¾ 庫ä¾ç²åæ´å¤ä¾åã