wingfoil 4.0.0

graph based stream processing framework
Documentation

## Dynamic Graphs

- Add and remove nodes at runtime without stopping execution
- Three approaches: high-level `dynamic_group_stream`, hand-rolled `MutableNode`, and static `demux_it`

Wingfoil supports modifying the graph at runtime — adding and removing nodes
between engine cycles — without stopping execution.

Three examples cover this from different angles:

- **[`dynamic-group`]dynamic-group/main.rs** — high-level API using
  [`dynamic_group_stream`] to wire per-instrument subgraphs on demand.
- **[`dynamic-manual`]dynamic-manual/main.rs** — low-level equivalent:
  a custom [`MutableNode`] that calls `state.add_upstream()` and
  `state.remove_node()` directly.
- **[`demux`]demux/main.rs** — statically-wired alternative using
  [`demux_it`] with a fixed-capacity slot pool; no dynamic wiring required.

All three build the same price aggregator: instruments are created and deleted
at runtime, and a running price book is maintained across the changes.

```bash
cargo run --example dynamic-group --features dynamic-graph-beta
cargo run --example dynamic-manual --features dynamic-graph-beta
cargo run --example demux
```