我正在使用wasm bindgen制作一个Rust for the web的图灵完整DSL.我希望能够从网上下载任意WASM代码,然后在我的DSL中使用该文件中的函数.我想的是某种相当于dlopen的动态链接.

但我不知道如何真正做到这一点.

从阅读WebAssembly docs篇文章中,我得到的印象是,这确实是可能的,但我的知识还不够渊博,无法从这份文件中理解过程的细节.

wasm bindgen参考中有一个chapter,详细介绍了如何使用instantiate WebAssembly modules from inside WebAssembly modules!,但这似乎是通过JavaScript实现的,JavaScript似乎不太理想,而不是WebAssembly文档所描述的.

在js sys中,可以从任意字符串创建JavaScript函数,但这实际上是从JavaScript端调用Function(/* some arbitrary string */),这似乎再次次优,而不是WebAssembly文档所描述的.

有没有其他更合适的方法来实现我的目标?

推荐答案

llvm/lld for WebAssembly中的动态链接支持是still a work in progress.我认为Rust中的动态链接目前在llvm/lld中的动态链接支持上被屏蔽.

Rust相关问答推荐

修改切片/引用数组

如何提高自定义迭代器的`extend`性能

在使用AWS SDK for Rust时,如何使用硬编码访问密钥ID和密钥凭据?

为什么基于高山Linux的Docker镜像不能在绝对路径下找到要执行的命令?

如何防止Cargo 单据和Cargo 出口发布( crate )项目

我如何使用AWS SDK for Rust获取我承担的角色的凭据?

我们能确定Rust会优化掉Clone()吗?如果它会立即掉落?

如何使用Actix Web for Rust高效地为大文件服务

用于实现获取 struct 体 id 的特征规范

处理带有panic 的 Err 时,匹配臂具有不兼容的类型

信号量释放后 Rust 输出挂起线程

当没有实际结果时,如何在 Rust 中强制执行错误处理?

闭包返回类型的生命周期规范

decltype、dyn、impl traits,重构时如何声明函数的返回类型

具有在宏扩展中指定的生命周期的枚举变体数据类型

使用 `.` 将 T 转换为 &mut T?

深度嵌套枚举的清洁匹配臂

需要括号的宏调用中的不必要的括号警告 - 这是编写宏的糟糕方法吗?

在 Rust 中有条件地导入?

返回引用的返回函数