wasm-bindgen、asm.js 和 Emcripten 之间有什么区别?

Pau*_*erg 1 emscripten asm.js webpack webassembly wasm-bindgen

我正在努力让 webpack 处理一组使用 wasm-bindgen 编译的WebAssembly 文件

即使这可能只是 webpack 的一个问题,它也让我意识到我没有完全掌握这些古怪的 WebAssembly 工具之间的差异。

Bum*_*Kim 6

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

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

首先,asm.js是在浏览器中运行 C/C++(或 Rust)代码的第一个成果,被认为是 WebAssembly 的先驱。它是可以编译 C/C++ 代码的 JS 子集。asm.js 编译的 C/C++ 代码可以在任何浏览器中运行,因为它是 JS,并且在许多浏览器中性能更高,因为它是 JS 的高度优化的子集。然而,asm.js 的性能通常低于 WebAssembly。

对于其他人,简而言之:

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