【发布时间】:2019-06-18 06:35:59
【问题描述】:
我正在使用 wasm-bindgen 在 Rust 中为 web 制作图灵完备的 DSL。我希望能够从 Web 下载任意 WASM 代码,然后在我的 DSL 中使用该文件中的函数。我想到的是某种与 dlopen 等效的动态链接。
我不知道如何实际实现这一点。
通过阅读WebAssembly docs,我得到的印象是它确实应该是可能的,但我的知识不足以理解本文档中的过程细节。
在 wasm-bindgen 参考中有一个chapter 详细说明了如何从 WebAssembly 模块内部实例化 WebAssembly 模块!,但这似乎是通过 JavaScript 来实现的,这似乎不是最理想的,而不是 WebAssembly文档描述。
在 js-sys 中,可以从任意字符串创建 JavaScript 函数,但这本质上是从 JavaScript 端调用 Function(/* some arbitrary string */),这似乎不是最理想的,而不是 WebAssembly 文档所描述的。
是否有可能或有其他更合适的方式来实现我的目标?
【问题讨论】:
-
我没有在 WASM 上使用 Rust 的经验,但在 C (Emscripten) 方面几乎没有经验。正如您所猜测的那样,WebAssembly 在设计时考虑了动态链接,通过 Import 和 Export。但是,该工具还不够成熟,因为您可以轻松地动态链接库而无需 hack。好消息是简单的动态链接绝对在他们的目标列表中。
标签: rust webassembly wasm-bindgen