wasi-nn Rust Bindings ===================== This crate contains API bindings for [wasi-nn] system calls in Rust. It is similar in purpose to the [wasi bindings] but this crate provides access to the optional neural network functionality from WebAssembly. [wasi-nn]: https://github.com/WebAssembly/wasi-nn [wasi bindings]: https://github.com/bytecodealliance/wasi > __NOTE__: These bindings are experimental (use at your own risk) and subject to upstream changes in the wasi-nn > specification. > __NOTE__: In the future this crate may be (should be) moved to its own repository, like the [wasi bindings]. ### Use Depend on this crate in your `Cargo.toml`: ```toml [dependencies] wasi-nn = "0.1.0" ``` Use the wasi-nn APIs in your application: ```rust use wasi_nn; unsafe { wasi_nn::load( &[&xml.into_bytes(), &weights], wasi_nn::GRAPH_ENCODING_OPENVINO, wasi_nn::EXECUTION_TARGET_CPU, ) .unwrap() } ``` Compile the application to WebAssembly: ```shell script cargo build --target=wasm32-wasi ``` Run the generated Wasm in a runtime supporting wasi-nn. Currently Wasmtime has experimental support using the Wasmtime APIs; see [main.rs](../main.rs) for an example of how this is accomplished. ### Generation This crate contains code ([`src/generated.rs`](src/generated.rs)) generated by [`witx-bindgen`](https://github.com/bytecodealliance/wasi/tree/main/crates/witx-bindgen). To regenerate this code, run `witx-bindgen` against the [`wasi-nn` WITX file](https://github.com/WebAssembly/wasi-nn/blob/master/phases/ephemeral/witx/wasi_ephemeral_nn.witx): ```shell script .../crates/witx-bindgen$ cargo run .../wasi-nn/phases/ephemeral/witx/wasi_ephemeral_nn.witx ``` ### License This project is licensed under the Apache 2.0 license. See [LICENSE](LICENSE) for more details. ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.