我想使用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
}
如何在没有wasm
的情况下将其转换为webpack
文件?
如何获取整个项目(具有库依赖项)并将其全部编译为Wasm?
答案 0 :(得分:5)
您可以直接使用cargo build --target wasm32-unknown-unknown
编译WebAssembly。本质上,这就是围绕wasm-pack
和wasm-bindgen
之类的其他工具构建的,如果您不希望这样做(例如,如果您不针对JavaScript),则可以使用它直接编译为WebAssembly
一些警告:
extern
函数进行。这意味着只能使用数量有限的类型,主要是原始类型(整数,浮点数,布尔值和指针)。除非您在顶部使用附加的抽象层(这就是wasm-bindgen
的作用),否则您将无法传递复杂的类型。wasm32-unknown-unknown
目标不支持标准库的大部分(例如,包括文件系统和网络)。如果您的WebAssembly主机支持WASI(WebAssembly系统接口),则可以使用wasm32-wasi
目标来编译具有WASI支持的模块,该模块支持更多标准库。