我想使用python-ext-wasm将 Rust 程序/项目编译为 Wasm 以在我的 Python 应用程序中使用。现有教程假设它是针对网络的,并建议使用wasm-pack. 有没有另一种方法可以在没有 JavaScript 绑定的情况下将 Rust 编译为 Wasm?
例如,如果我有一个 Rust 程序 ( myproject/math.rs)。
#[no_mangle]
pub extern fn sum(x: i32, y: i32) -> i32 {
x + y
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为wasm没有的文件webpack?
如何获取整个项目(及其库依赖项)并将它们全部编译为 Wasm?
Frx*_*rem 11
您可以直接使用cargo build --target wasm32-unknown-unknown. 这本质上是其他工具喜欢wasm-pack并wasm-bindgen围绕它构建的,如果您不想要(例如,如果您不针对 JavaScript),您可以使用它直接编译为 WebAssembly。
不过有一些注意事项:
extern函数进行。这意味着只能使用有限数量的类型,主要是原始类型(整数、浮点数、布尔值和指针)。您将无法传递复杂类型,除非您在顶部使用了额外的抽象层(这就是这样wasm-bindgen做的)。wasm32-unknown-unknown目标不支持标准库的大部分(例如,包括文件系统和网络)。如果你的 WebAssembly 主机支持 WASI(WebAssembly 系统接口),你可以使用wasm32-wasi目标来编译一个支持 WASI 的模块,它支持更多的标准库。