Wasmtime
|
This documentation is an overview and API reference for the C API of Wasmtime. The C API is spread between three different header files:
The wasm.h header file comes directly from the WebAssembly/wasm-c-api repository. At this time the upstream header file does not have documentation so Wasmtime provides documentation here. It should be noted, however, that some semantics may be Wasmtime-specific and may not be portable to other engines. The Wasmtime project intends to assist in the development of the upstream C API.
The wasi.h and wasmtime.h header files are specific to the Wasmtime project. It's hoped to standardize wasi.h in the WASI standard eventually, but wasmtime.h provides Wasmtime-specific extensions to the C API which are not intended to standardize.
To install the C API from precompiled binaries you can download the appropriate binary from the releases page of Wasmtime. Artifacts for the C API all end in "-c-api" for the filename.
Each archive contains an include
directory with necessary headers, as well as a lib
directory with both a static archive and a dynamic library of Wasmtime. You can link to either of them as you see fit.
You'll want to arrange the include
directory of the C API to be in your compiler's header path (e.g. the -I
flag). If you're compiling for Windows and you're using the static library then you'll also need to pass -DWASM_API_EXTERN=
and -DWASI_API_EXTERN=
to disable dllimport.
Your final artifact can then be linked with -lwasmtime
. If you're linking against the static library you may need to pass other system libraries depending on your platform:
-lpthread -ldl -lm
ws2_32.lib advapi32.lib userenv.lib ntdll.lib shell32.lib ole32.lib
The C API is located in the crates/c-api
directory of the Wasmtime repository. To build from source you'll need a Rust compiler and a checkout of the wasmtime
project. Afterwards you can execute:
This will place the final artifacts in target/release
, with names depending on what platform you're compiling for.
Some other handy resources you might find useful when exploring the C API documentation are:
wasmtime
crate documentation - although this documentation is for Rust and not C, you'll find that many functions mirror one another and there may be extra documentation in Rust you find helpful. If you find yourself having to frequently do this, though, please feel free to file an issue.