COOLJAPAN
← All posts

PandRS 0.3.2 Released — Same-Day Housekeeping: Virtual Workspace + Tree Cleanup

A same-day patch on the heels of PandRS 0.3.1. Converts the root Cargo.toml into a virtual workspace, hoists ~55 common dependencies into [workspace.dependencies] for consistent versions across the crate and py_bindings, fixes clippy and test hygiene, makes test temp paths portable, and purges 134 stale backup files. No public API changes; 1813 tests pass.

release pandrs dataframe cargo-workspace pure-rust maintenance

Sometimes the best release is the one that changes nothing you can see — and everything about how the build holds together.

Today we also released PandRS 0.3.2 — a same-day housekeeping patch on the heels of 0.3.1.

0.3.1 did the heavy lifting: a Pure Rust Excel path and a full sweep of -sys dependencies, keeping the DataFrame layer of the COOLJAPAN stack free of C and Fortran baggage. 0.3.2 doesn’t touch the public API at all. It makes the workspace itself cleaner so those wins are easier to reproduce.

Why 0.3.2 matters

A DataFrame crate with Python bindings has two manifests that have to agree on dozens of dependency versions. Drift between them is how subtle, hard-to-reproduce build problems start.

0.3.2 fixes that at the root. The top-level Cargo.toml is now a Cargo virtual workspace, with the common dependency set (~55 entries) hoisted into [workspace.dependencies]. Subcrates pull versions from one place via *.workspace = true, and the py_bindings subcrate now inherits version, authors, edition, license, and related metadata straight from the workspace root. The Pure Rust feature pins for datafusion, arrow, and parquet (the flate2-zlib-rs backend) are documented inline where they’re declared, so the reason a pin exists lives next to the pin. The result is a single source of truth for versions, more reproducible builds, and a tidier tree — 134 stale *.backup2 files are gone, with .gitignore patterns added so they don’t come back.

Getting Started

cargo add pandrs
use pandrs::{DataFrame, Series};

fn main() -> pandrs::error::Result<()> {
    let mut df = DataFrame::new();
    df.add_column(
        "name".to_string(),
        Series::from_vec(vec!["Alice", "Bob"], Some("name")),
    )?;
    df.add_column(
        "score".to_string(),
        Series::from_vec(vec![91.5, 88.0], Some("score")),
    )?;
    // Nothing in your code changes in 0.3.2 — same public API, tighter build
    println!("{} rows", df.shape().0);
    Ok(())
}

There is no migration. The public API is identical to 0.3.1 — this is a drop-in patch.

What’s New in 0.3.2

Tips

This is the foundation

PandRS is the DataFrame layer of the COOLJAPAN scientific stack, sitting alongside NumRS2 and SciRS2 — and a clean, single-source-of-truth workspace keeps that layer easy to build and trust.

Repository: https://github.com/cool-japan/pandrs

Star the repo if you want a pandas-class DataFrame with no C, no Fortran, and a build you can reproduce.

Pure Rust DataFrames — fast, safe, and sovereign.

KitaSan at COOLJAPAN OÜ April 19, 2026

↑ Back to all posts