Skip to content
Opensource internals
  • Posts

Polars

A Tour of Polars' Internals: The Twelve Ideas That Explain the Engine

Oct 21, 2026 9 min read Jay Hubbert

A guided tour of the ideas that make Polars fast: chunked columns, inline strings, arena-allocated expressions, a rewrite-heavy optimizer, morsel pipelines and hash shuffles.

PolarsInternalsPerformanceOverviewArchitecture

Read more →

Polars Spills to Disk Before It Runs Out of Memory

Oct 21, 2026 18 min read Jay Hubbert

Polars tracks memory with a process-global counting allocator and a budget; nodes register their output frames as spillable, and a global manager writes them to zstd-compressed IPC …

PolarsInternalsPerformanceMemoryStreaming

Read more →

Polars Publishes a Join's Build Side as a Runtime Filter

Oct 21, 2026 19 min read Jay Hubbert

An optimizer pass traces a join key from the probe side down to a parquet scan, hands the scan a DynamicPred slot, and the join fills that slot with the build side’s key range once …

PolarsInternalsJoinsOptimizerParquet

Read more →

Polars Runs Queries on Rayon's Global Thread Pool

Oct 21, 2026 13 min read Jay Hubbert

crates/polars-core/src/runtime.rs wraps every rayon entry point in a zero-sized RAYON marker, which on native builds forwards straight to rayon’s global pool. Polars’ own pools are …

PolarsInternalsConcurrencyPerformance

Read more →

Polars Shares Data With Python Over the Arrow C Data Interface

Oct 21, 2026 12 min read Jay Hubbert

polars-arrow implements the Arrow C Data Interface: three C structs, a private_data box holding the Rust array, and a release callback that transfers ownership back. Buffers are …

PolarsInternalsArrowPythonMemory

Read more →

← Newer Page 1 of 7 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·