Files
wasmtime/crates/wiggle
Andrew Brown 3ce896f69d wiggle: choose between &mut self and &self (#5428)
Previously, all Wiggle-generated traits were generated with `&mut self`
signatures. With the addition of the `mutable` configuration option to
`from_witx!` and `wasmtime_integration!`, one can disable this, emitting
instead traits that use `&self` (i.e., `mutable: false`). This change is
helpful for implementing wasi-threads: WASI implementations with
interior mutability will now be able to communitcate this to their
Wiggle-generated code.

The other side of this change is the `get_cx` closure passed to Wiggle's
generated `add_to_linker` function. When `mutability` is set to `true`
(default), the `get_cx` function takes a `&mut` data structure from the
store and returns a corresponding `&mut` reference, usually to a field
of the passed-in structure. When `mutability: false`, the `get_cx`
closure will still take a `&mut` data structure but now will return a
`&` reference.
2022-12-13 14:38:47 -08:00
..
2021-01-07 11:45:11 -08:00

wiggle

Wiggle is a code generator for the host side of a witx interface. It is invoked as a Rust procedural macro.

Wiggle is not specialized to any particular WebAssembly runtime. It is usable in at least Wasmtime and Lucet.

Learning more

Read the docs on docs.rs.

There are child crates for integrating with Wasmtime and Lucet.

The wasi-common crate is implemented using Wiggle and the wasmtime-wasi crate integrates wasi-common with the Wasmtime engine.

Andrew Brown wrote a great blog post on using Wiggle with Wasmtime.