wasm-bindgen,asm.js和Emcripten有什么区别?

时间:2019-04-24 16:43:42

标签: webpack emscripten webassembly asm.js wasm-bindgen

我正在努力使Webpack与使用wasm-bindgen编译的WebAssembly files集合一起工作。

即使只是webpack的issue,它也让我意识到我还没有完全掌握这些古怪的WebAssembly工具之间的区别。

1 个答案:

答案 0 :(得分:2)

  

使用wasm-bindgen和Emscripten编译的WebAssembly模块

这没有道理。您正在完全混合所有内容,并且链接的问题不应应用于您的问题。 wasm-bindgen与Emscripten之间没有任何关系。

首先, asm.js 是在浏览器中运行C / C ++(或Rust)代码的第一步,并且被认为是WebAssembly的前身。可以将C / C ++代码编译为JS的子集。汇编为asm.js的C / C ++代码可以在任何浏览器中运行,因为它是JS,并且由于它是JS的高度优化子集,因此在许多浏览器中性能更高。但是,与WebAssembly相比,asm.js的性能通常 差。

对于其他人,简而言之:

  • Emscripten 是用于WebAssembly / asm.js的 C / C ++ 编译器工具链。
  • wasm-bindgen 是用于与JS代码进行交互的 Rust 绑定程序生成器。