Skip to content

Roadmap: The Path to 10M+ Rows #49

@wangjiawen2013

Description

@wangjiawen2013

Charton aims to be a lightweight, high-performance, and versatile Rust visualization library built on the Grammar of Graphics.

1. Decoupling & Core Optimization

  • Remove Hardcoded Polars Logic: Refactor internal compute kernels to use standard library primitives, ahash for fast grouping, and rayon for data-parallel execution.
  • Conditional Feature Gating: Move Polars support to an optional cfg feature. Ensure the core library remains lightweight and dependency-lean.
  • Universal Ingestion: Implement a Dataset struct to unify inputs from Vec, ndarrays, and DataFrames into a normalized internal format.

2. API & Macro Ergonomics

  • Implement a polymorphic chart! macro that leverages pattern dispatching to ingest either unified data sources (like DataFrames) or variadic raw vectors with automatic stringify!-based header capture.

3. High-Performance Data Pipeline

  • Hybrid Precision Engine: Use &[f64] for internal analytical computations (aggregation, scaling) to maintain precision, and &[f32], bytemuck for GPU-bound rendering buffers.
  • Zero-Copy Slicing: Optimize the data flow to ensure that 10M+ rows are processed via non-allocating slices wherever possible.
  • png backend: Replace resvg with tiny-skia to implement true png backend.

4. WGPU Backend:
Finalize the pipeline for direct hand-off to GPU vertex buffers, enabling 60 FPS interaction on massive datasets

  • wgpu + tiny_skia hybrid architecture
  • pure wgpu
  • remove lyon for draw_path to obtain the highest performance. Use WGSL Shader to calculate the line thickness instead of lyon.

5. Advanced Analytical Features

  • High-Arity Faceting: Implement a robust "Small Multiples" (Faceting) engine based on fast grouping logic.
  • Intelligent Decimation: Add optional data downsampling/aggregation strategies for rendering optimization when row counts exceed screen resolution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions