13 releases (breaking)
| new 0.9.0 | Feb 2, 2026 |
|---|---|
| 0.9.0-dev | Nov 10, 2025 |
| 0.8.1 | Nov 11, 2025 |
| 0.7.0 | Jun 17, 2025 |
| 0.5.0 | Jul 22, 2024 |
#2150 in WebAssembly
12,269 downloads per month
Used in 14 crates
(11 directly)
270KB
5.5K
SLoC
A library for defining, encoding, and decoding WebAssembly composition graphs.
An example of composing two components together using a CompositionGraph:
use wac_graph::{CompositionGraph, EncodeOptions, types::Package};
let mut graph = CompositionGraph::new();
// Register the packages with the graph
// It is assumed that `my:package1` exports a function named `a`,
// while `my:package2` imports a function named `b`.
let pkg = Package::from_file("my:package1", None, "package1.wasm", graph.types_mut())?;
let package1 = graph.register_package(pkg)?;
let pkg = Package::from_file("my:package2", None, "package2.wasm", graph.types_mut())?;
let package2 = graph.register_package(pkg)?;
// Instantiate package `my:package1`
let instantiation1 = graph.instantiate(package1);
// Alias the `a` export of the `my:package1` instance
let a = graph.alias_instance_export(instantiation1, "a")?;
// Instantiate package `my:package2`
let instantiation2 = graph.instantiate(package2);
// Set argument `b` of the instantiation of `my:package2` to `a`
graph.set_instantiation_argument(instantiation2, "b", a)?;
// Finally, encode the graph into a new component
let bytes = graph.encode(EncodeOptions::default())?;
Dependencies
~6MB
~109K SLoC