29 stable releases (9 major)

new 27.0.0 Nov 20, 2024
26.0.1 Nov 5, 2024
26.0.0 Oct 22, 2024
25.0.3 Nov 5, 2024
18.0.3 Mar 12, 2024

#166 in WebAssembly

Download history 3422/week @ 2024-08-01 2280/week @ 2024-08-08 3496/week @ 2024-08-15 3816/week @ 2024-08-22 3494/week @ 2024-08-29 3304/week @ 2024-09-05 3523/week @ 2024-09-12 4062/week @ 2024-09-19 4094/week @ 2024-09-26 4211/week @ 2024-10-03 4596/week @ 2024-10-10 3425/week @ 2024-10-17 3300/week @ 2024-10-24 3689/week @ 2024-10-31 3474/week @ 2024-11-07 4160/week @ 2024-11-14

15,160 downloads per month
Used in 4 crates (2 directly)

Apache-2.0 WITH LLVM-exception

3MB
51K SLoC

Wasmtime's C API

API Documentation

The API documentation for the Wasmtime C library is hosted here..

Using in a C Project

Using a Pre-Built Static or Dynamic Library

Each release on Wasmtime's GitHub Releases page has pre-built binaries for both static and dynamic libraries for a variety of architectures and operating systems attached, as well as header files you can include.

Building Wasmtime's C API from Source

To use Wasmtime from a C or C++ project, you must have CMake and a Rust toolchain installed.

From the root of the Wasmtime repository, run the following commands:

$ cmake -S crates/c-api -B target/c-api --install-prefix "$(pwd)/artifacts"
$ cmake --build target/c-api
$ cmake --install target/c-api

These commands will produce the following files:

  • artifacts/lib/libwasmtime.{a,lib}: Static Wasmtime library. Exact extension depends on your operating system.

  • artifacts/lib/libwasmtime.{so,dylib,dll}: Dynamic Wasmtime library. Exact extension depends on your operating system.

  • artifacts/include/**.h: Header files for working with Wasmtime.

Using in a Rust Project

If you have a Rust crate that contains bindings to a C or C++ library that uses Wasmtime, you can link the Wasmtime C API using Cargo.

  1. Add a dependency on the wasmtime-c-api-impl crate to your Cargo.toml. Note that package name differs from the library name.
[dependencies]
wasmtime-c-api = { version = "16.0.0", package = "wasmtime-c-api-impl" }
  1. In your build.rs file, when compiling your C/C++ source code, add the C wasmtime-c-api headers to the include path:
fn main() {
    let mut cfg = cc::Build::new();

    // Add to the include path the wasmtime headers and the standard
    // Wasm C API headers.
    cfg
        .include(std::env::var("DEP_WASMTIME_C_API_INCLUDE").unwrap());

    // Compile your C code.
    cfg
        .file("src/your_c_code.c")
        .compile("your_library");
}

Dependencies

~17–32MB
~557K SLoC