Published on

Polars 2.0

Authors
  • avatar
    Name
    Hoang Nguyen
    LinkedIn
Polars 2.0

👤 1. Who Is Involved & Impacted?

  • Core Development Team: Initiated by Ritchie Vink (ritchie46 – creator of Polars) alongside the core engineering team (notably core developer orlp, who directly answered deep technical questions in the community thread).
  • Direct Competitors: Leading big-data and analytical processing engines today, including DuckDB (versions 1.5.6 and 2.0 alpha), Apache DataFusion (54.0.0), and the traditional Pandas library.
  • Target Users: Data Engineers, Data Scientists, Python/Rust Developers, and automated code-writing AI Agents.

📦 2. What Is New in Polars 2.0?

Polars 2.0 is a major upgrade to the high-speed DataFrame library written in Rust, centered around 5 core changes:

  1. Streaming & Out-of-Core (Spill-to-Disk) by Default: When calling .collect() on a LazyFrame, Polars now processes data in small streaming batches by default instead of loading the entire dataset into RAM at once. When RAM usage reaches ~80%, intermediate data automatically spills to disk (up to a 64 GB default budget) for operations like sort and window functions. (Note: join and group-by operations do not yet support disk spilling in 2.0, and the final output table must still fit in RAM).
  2. Elevating SQL to a First-Class Citizen: Query planner optimizations—including automatic join reordering, common-subplan elimination, and dynamic filters/bloom filters—let users write SQL directly on Polars at speeds surpassing both DuckDB and DataFusion in standard benchmarks.
  3. New Map Data Type: Native support for dictionary-style key-value structures (similar to Python's dict) with fast lookup methods (map.get, contains_key), replacing the complex nested List(Struct) workarounds required in 1.x.
  4. Stricter & Fail-Fast Validation: Introduces collect_schema() to detect data-type mismatches up-front before execution—enabling both humans and AI tools to fix code bugs immediately instead of waiting 20 minutes into a pipeline run for a crash.
  5. Next on the Roadmap: Rebooting GeoPolars (geospatial and map data processing) and building out the distributed Polars Cloud platform.

Polars 2.0 — 5W1H & SQL Benchmark Scorecard

📅 3. When & Where?

  • When: Officially released on October 6, 2026 (with code merges for the 2.0 branch starting in mid-June 2026).
  • Where: Source code and full benchmark datasets are publicly available on GitHub (pola-rs/polars and pola-rs/polars-2.0-benchmark), drawing 471 points and 107 comments in a lively discussion on Hacker News.

🎯 4. Why Bump to Version 2.0?

  • Default Behavior Change (Breaking Change): To achieve maximum performance on the new Streaming engine, several operations (join, group_by, unpivot) no longer preserve row order by default. If deterministic row ordering is required, users must explicitly opt in via maintain_order=True.
  • Preventing Out-of-Memory (OOM) Crashes: Eliminates the constant fear of processes crashing due to RAM exhaustion when everyday practitioners process datasets larger than their machine's memory capacity.
  • Expanding Market Share: Positions Polars not just as a Pandas replacement in Python, but as a head-to-head competitor against DuckDB in SQL-based data analytics.

⚙️ 5. How Did They Prove It & Community Reaction?

  • Benchmark Methodology: Evaluated standard TPC-H and TPC-DS query suites (at SF10 and SF100 data scales) across two AWS server configurations: a mid-range 16-vCPU / 32 GB RAM (c7a.4xlarge) instance and a high-end 192-vCPU / 384 GB RAM (c7a.metal) bare-metal machine.
  • Real-World Results & Bottlenecks:
    • Wins: Polars completed 100% of queries and finished fastest across almost every category (while DataFusion timed out or ran out of memory on several heavy queries).
    • Admitted Weakness: On small datasets (SF10) running on the 192-core server, default Polars slowed down due to the overhead of splitting work across too many threads (1922192^2 partitions during joins). Capping the limit to 32 threads immediately restored top speed.
  • Multi-Angle Perspectives from Hacker News:
    • On Benchmark Honesty: When the community questioned how representative the tests were, Polars engineer orlp candidly shared: "There's a reason everyone always wins their own benchmark" (as benchmark authors naturally optimize their product around the suites they test), while several engineers pointed out that TPC benchmarks still fail to capture deeply nested JSON processing in production.
    • On the Shift Away from Pandas: Most developers agreed that Polars (alongside DuckDB) now covers 99% of Pandas use cases at tens of times the speed with much cleaner syntax. The main reasons Pandas still retains users are old habits (the "sunk-cost fallacy") and compatibility with long-standing scientific libraries (such as SciPy and GeoPandas)—though the intermediate Narwhals library is making it increasingly seamless to connect Polars with the legacy ecosystem.

✅ CONCLUSION

Polars (often paired with DuckDB) is the default alternative to Pandas for new code; Pandas relies primarily on muscle memory and interop with third-party libraries.

References