Repository navigation
v2.0.0 — first public release
First public release. vizcrush is a set of data primitives for browser visualization — downsampling, binning, spatial indexing, streaming aggregation — written in Rust, compiled to WebAssembly, with a pure-JS core behind the same API as a fallback and an explicitly selectable backend.
npm install @vizcrush/core @vizcrush/downsampleWhat is honest about the performance story
Every performance claim in this repo traces to a committed benchmark result or an ADR. Three claims did not survive that rule and were deleted rather than softened, each with a written retraction:
- SIMD is not doing the work (ADR 0002). The
+simd128build of the downsample module is byte-identical to the scalar build — same SHA-256. Timings match at every input size. - WASM is not uniformly faster (ADR 0003). About 4× faster than the JS core in Chromium/V8, roughly 8× slower in Firefox at 1M points, modestly slower in WebKit. Cold start is slower than JS in every engine.
- WebGPU compute is not a speedup here (ADR 0004). The wired bin2d GPU path measured about 15× slower than WASM end-to-end. It ships opt-in, falls back silently, and is never auto-selected.
The full story is in the launch post.
Backend selection
Automatic selection is availability-based: WASM where WebAssembly exists, the JS core otherwise, and the JS core regardless for inputs below a size threshold (default 1000), where crossing the WASM boundary costs more than it saves. Force a path with { backend: "js" } or { backend: "wasm" }. WebGPU is opt-in per call, on bin2d only.
Packages
| Package | Version |
|---|---|
@vizcrush/core |
2.0.0 |
@vizcrush/bin |
1.1.0 |
@vizcrush/aggregate, @vizcrush/ai, @vizcrush/bin3d, @vizcrush/downsample, @vizcrush/mcp-server, @vizcrush/react, @vizcrush/spatial, @vizcrush/spatial3d, @vizcrush/transform |
1.0.0 |
All published with SLSA provenance. Publishing uses npm trusted publishing (GitHub Actions OIDC); no long-lived tokens are stored in this repository.
Also
- 435 tests (158 Rust, 277 TypeScript), 37 examples
- 23 MCP tools via
@vizcrush/mcp-server - Docs: https://debug-diary-1.github.io/vizcrush · Book: https://debug-diary-1.github.io/vizcrush-book