Skip to content

FlexViz 0.1.0b1

Pre-release
Pre-release

Choose a tag to compare

@jvdd jvdd released this 25 Aug 15:35
· 363 commits to main since this 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 flexviz

The 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
    with flexviz, versioned independently (flexviz-polars-v0.1.0b1).

Performance

  • The default line downsampling path (downsample="minmax") runs as one fused
    minmax_line kernel 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_max window 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