* Add a first-class way of accessing caller's exports This commit is a continuation of #1237 and updates the API of `Func` to allow defining host functions which have easy access to a caller's memory in particular. The new APIs look like so: * The `Func::wrap*` family of functions was condensed into one `Func::wrap` function. * The ABI layer of conversions in `WasmTy` were removed * An optional `Caller<'_>` argument can be at the front of all host-defined functions now. The old way the wasi bindings looked up memory has been removed and is now replaced with the `Caller` type. The `Caller` type has a `get_export` method on it which allows looking up a caller's export by name, allowing you to get access to the caller's memory easily, and even during instantiation. * Add a temporary note * Move some docs
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
//! Wasmtime's embedding API
|
|
//!
|
|
//! This crate contains a high-level API used to interact with WebAssembly
|
|
//! modules. The API here is intended to mirror the proposed [WebAssembly C
|
|
//! API](https://github.com/WebAssembly/wasm-c-api), with small extensions here
|
|
//! and there to implement Rust idioms. This crate also defines the actual C API
|
|
//! itself for consumption from other languages.
|
|
|
|
#![deny(missing_docs, intra_doc_link_resolution_failure)]
|
|
|
|
mod callable;
|
|
mod externals;
|
|
mod frame_info;
|
|
mod func;
|
|
mod instance;
|
|
mod module;
|
|
mod r#ref;
|
|
mod runtime;
|
|
mod trampoline;
|
|
mod trap;
|
|
mod types;
|
|
mod values;
|
|
|
|
pub use crate::callable::Callable;
|
|
pub use crate::externals::*;
|
|
pub use crate::frame_info::FrameInfo;
|
|
pub use crate::func::*;
|
|
pub use crate::instance::Instance;
|
|
pub use crate::module::Module;
|
|
pub use crate::r#ref::{AnyRef, HostInfo, HostRef};
|
|
pub use crate::runtime::{Config, Engine, OptLevel, Store, Strategy};
|
|
pub use crate::trap::Trap;
|
|
pub use crate::types::*;
|
|
pub use crate::values::*;
|
|
|
|
cfg_if::cfg_if! {
|
|
if #[cfg(unix)] {
|
|
pub mod unix;
|
|
} else if #[cfg(windows)] {
|
|
pub mod windows;
|
|
} else {
|
|
// ... unknown os!
|
|
}
|
|
}
|