FlexViz 0.1.0b1
Pre-release
Pre-release
The first public release of FlexViz: a renderer-agnostic, lazily evaluated,
stateless visualization library built on Polars and FastAPI, for exploring
datasets of 100M+ rows.
pip install flexvizThe Rust kernels arrive as a prebuilt flexviz-polars wheel on Linux
(x86_64, aarch64), macOS (Intel and Apple silicon), and Windows (x64); any
other platform builds them from source on stable Rust.
Highlights
- Ten trace types: line, histogram, box, bar, pie, treemap, 2D histogram,
correlation heatmap, geo 2D histogram, and geo line. - Native cross-filtering in update or overlay mode, with grouped traces and
linked hover. - Client-side cube live-brushing, so dragging a brush costs no server
round-trips. - Shareable URLs that encode viewport, selections, cross-filter mode, and
dashboard layout, with no server-side state. - Drag-and-drop dashboard grid, with the arrangement carried in the URL.
- Plotly.js rendering behind an adapter boundary.
mount_into()for embedding into an existing FastAPI application.flexviz-polars, the Rust Polars expression kernels behind the line
downsampling and fixed-bin histogram and heatmap paths. Released together
withflexviz, versioned independently (flexviz-polars-v0.1.0b1).
Performance
- The default line downsampling path (
downsample="minmax") runs as one fused
minmax_linekernel call per trace. Polars does not
common-subexpression-eliminate plugin expressions, so the previous
index-plus-two-gathers form scanned every column twice; the fused call
halves kernel work and makes frame times markedly steadier. Output is
bit-identical, pinned by a differential test. - The
arg_min_maxwindow scan is parallel across windows on the plugin's
kernel thread pool: ~1.3-1.6x on a single trace at 100M rows. - Benchmarks against Datashader, Vaex, and Mosaic are at
flexviz.tech/benchmarks; the
harness and per-trial results live in
flexviz-benchmarks.
Compatibility
FlexViz is pre-1.0: minor versions may break the Python API, the spec wire
format, shared-URL encoding, and storage or cache formats. See the
compatibility policy.
Full changelog: CHANGELOG.md