Polars 2.0 Pre-Release: Streaming Engine Now Default
Original: Pre-Release of Polars 2.0
Why This Matters
Polars 2.0's streaming-by-default shift signals a maturation of the Python data processing ecosystem beyond pandas.
Open-source DataFrame library Polars released the first release candidate for version 2.0 on September 2, 2026. The major change makes the streaming engine the default for all LazyFrame queries, with an expected 5x performance improvement and significant memory reduction.
Polars 2.0's first release candidate was announced by Ritchie Vink on September 2, 2026, with the final release expected within weeks. The team emphasized this is not a large feature release but rather a version bump to remove outdated design decisions and update defaults.
The biggest change is that LazyFrame's collect() now defaults to the streaming engine instead of the in-memory engine. This is expected to deliver approximately 5x faster performance and significantly lower memory usage for most queries. The trade-off is that row order is no longer guaranteed by default for operations such as join, group_by, and unpivot. Users who need deterministic row order can pass maintain_order=True, and those who prefer the old in-memory engine can set it process-wide via pl.Config.set_engine_affinity('in-memory') or per query.
Polars 2.0 also introduces stricter type-checking behavior. For example, is_in expressions on mismatched data types previously performed silent lossy coercions; this is now disallowed by default. The team noted that early schema validation via collect_schema() is especially useful for AI agents building data pipelines, enabling fast feedback without materializing data. A full migration guide has been published to help users transition.