Incremental, “Vega-ish” visualization runtime + chart building blocks.
Vizir is a small family of crates designed to be combined in different stacks over time. The focus is on clean separation of concerns, pluggable performance trade‑offs, and long‑term architectural stability.
-
vizir_core#![no_std]+allocincremental evaluation core.- Versioned inputs:
Table(row keys + optional column accessor) and typedSignal<T>. - Stable identity via
MarkId, and diffsEnter/Update/Exitkeyed byMarkId. - Mark primitives:
Rect,Path,Text(unshaped), plusz_indexfor ordering.
-
vizir_charts#![no_std]+allocchart building blocks that generatevizir_core::Marks.- Scales:
ScaleLinear,ScaleBand(v1). - Guides:
AxisSpec(Vega-styleorient),LegendSwatchesSpec(now supports columns). - Mark specs (Swift Charts / Vega-inspired):
BarMarkSpec,LineMarkSpec,PointMarkSpec,AreaMarkSpec,RuleMarkSpec,SectorMarkSpec, plusRectMarkSpec/TextMarkSpec.
-
vizir_charts_demo- A tiny demo binary that emits SVG dumps:
bar.svg,scatter.svg,line.svg,area.svg,sector.svg. - This crate can depend on
stdand is where we experiment with renderer adapters.
- A tiny demo binary that emits SVG dumps:
-
vizir_examples- Scratch/example binaries (kept separate from core crates).
- Long-term architecture over short-term compatibility.
- Keep core crates
no_std-first and minimize dependencies. - Keep rendering out of the core: consumers apply
MarkDiffto their own display/imaging layers. - Prefer stable identity + diffs over rebuilding whole scenes.
Living roadmap/design notes live in plans/:
plans/README.md
- Run the demo SVG emitter:
cargo run -p vizir_charts_demo
- Validate the workspace:
cargo fmt --allcargo clippy --workspace --all-targets --all-features -- -D warningscargo test --workspace --all-features
- Minimum supported Rust: 1.88.
- Dual-licensed under Apache‑2.0 and MIT.