是否可以从 AssemblyScript 导入 .wasm 文件?

Posted

技术标签:

【中文标题】是否可以从 AssemblyScript 导入 .wasm 文件?【英文标题】:Is it possible to import a .wasm file from AssemblyScript? 【发布时间】:2021-09-05 14:58:15 【问题描述】:

我可以从我的 AssemblyScript 代码中导入 .wasm 文件吗?我知道我可以使用 AssemblyScript 加载程序从 TypeScript 加载 .wasm 文件,但是如果我按照 https://www.assemblyscript.org/loader.html 上的说明尝试构建我的 AssemblyScript 示例,则会出现错误

长话短说,我有一个已编译为 WASM 的 Rust 库。我想在我的 AssemblyScript 示例中使用该代码。这可能吗?

【问题讨论】:

【参考方案1】:

据我所知,目前还没有工具可以静态链接来自不同语言的两个 wasm 二进制文件。

这很困难有几个原因:AS 模块在设计时没有考虑重定位(即您不能间接引用导入),另一个是目前 Wasm 没有提供分配,每个二进制文件通常都打包自己的内部分配器。这意味着如果没有协调,两个分配器不知道可用内存的状态,并且可能相互覆盖。

听起来您的用例在浏览器中,但如果您不是,wasmtime 现在有动态链接,这对于做您想做的事情可能很有用。 See here for an example, all be it a simple one that doesn't have the allocator issue mentioned above

【讨论】:

在这种情况下,我实际上使用的是 Wasmtime。但是,我要做的基本上与您的示例相反(顺便说一句,这很有帮助)。基本上,我有一个已编译为 WASM 的 Rust 库,我想在我的 AssemblyScript 示例中导入并使用它。如果我设法提出一个可行的示例,我一定会回来分享它。 酷!祝你好运,即使你还没有完成,也可以随意分享!

以上是关于是否可以从 AssemblyScript 导入 .wasm 文件?的主要内容,如果未能解决你的问题,请参考以下文章

三等号(===)在AssemblyScript中的行为是否不同?

AssemblyScript 是不是支持函数数组?

三等号 (===) 在 AssemblyScript 中的行为是不是不同?

WebAssembly学习:AssemblyScript - Hello World

assemblyScript

为啥 AssemblyScript 中的 store() 不在指定指针处存储数据?