# Polars 1.25.2 — Python Polars 1.25.2 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-03-15 - Version: 1.25.2 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.25.2 - Permalink: https://whatsnew.fyi/product/polars/releases/1.25.2 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add lazy sinks - **added** — Add PartitionByKey for new streaming sinks - **added** — Add a config option to specify the default engine to attempt to use during lazyframe calls - **added** — Add len method to arr - **added** — Add new PartitionMaxSize sink - **added** — Add NDJSON source to new streaming engine - **changed** — Enable common subplan elimination across plans in collect_all - **changed** — Implement linear-time rolling_min/max - **changed** — Improve InputIndependentSelect by delegating to InMemorySourceNode - **changed** — Add support for rolling_(sum/min/max) for booleans through casting - **changed** — Support multi-column sort for all nested types and nested search-sorted - **changed** — Enable joins on list/array dtypes - **changed** — Stabilize Enum datatype - **changed** — Enable new streaming memory sinks by default - **changed** — Support engine callback for LazyFrame.profile - **fixed** — Fix lazy schema for truediv ops involving List/Array dtypes - **fixed** — Fix error due to race condition in file cache - **fixed** — Clear NaNs due to zero-weight division in rolling var/std - **fixed** — New streaming multiscan deadlock - **fixed** — Fix deadlock in cache + hconcat ##### 🏆 Highlights - Enable common subplan elimination across plans in `collect_all` (#21747) - Add lazy sinks (#21733) - Add `PartitionByKey` for new streaming sinks (#21689) - Enable new streaming memory sinks by default (#21589) ##### 🚀 Performance improvements - Implement linear-time rolling\_min/max (#21770) - Improve InputIndependentSelect by delegating to InMemorySourceNode (#21767) - Enable common subplan elimination across plans in `collect_all` (#21747) - Allow elementwise functions in recursive lowering (#21653) - Add primitive single-key hashtable to new-streaming join (#21712) - Remove unnecessary black\_boxes in Kahan summation (#21679) - Box large enum variants (#21657) - Improve join performance for new-streaming engine (#21620) - Pre-fill caches (#21646) - Optimize only a single cache input (#21644) - Collect parquet statistics in one contiguous buffer (#21632) - Update Cargo.lock (mainly for zstd 1.5.7) (#21612) - Don't maintain order when maintain\_order=False in new streaming sinks (#21586) - Pre-sort groups in group-by-dynamic (#21569) ##### ✨ Enhancements - Add support for rolling\_(sum/min/max) for booleans through casting (#21748) - Support multi-column sort for all nested types and nested search-sorted (#21743) - Add lazy sinks (#21733) - Add `PartitionByKey` for new streaming sinks (#21689) - Fix replace flags (#21731) - Add `mkdir` flag to sinks (#21717) - Enable joins on list/array dtypes (#21687) - Add a config option to specify the default engine to attempt to use during lazyframe calls (#20717) - Support all elementwise functions in IO plugin predicates (#21705) - Stabilize Enum datatype (#21686) - Support Polars int128 in from arrow (#21688) - Use FFI to read dataframe instead of transmute (#21673) - Enable new streaming memory sinks by default (#21589) - Cloud support for new-streaming scans and sinks (#21621) - Add len method to arr (#21618) - Closeable files on unix (#21588) - Add new `PartitionMaxSize` sink (#21573) - Support engine callback for `LazyFrame.profile` (#21534) - Dispatch new-streaming CSV negative slice to separate node (#21579) - Add NDJSON source to new streaming engine (#21562) - Support passing `token` in `storage_options` for GCP cloud (#21560) ##### 🐞 Bug fixes - Expose and document partitions (#21765) - Fix lazy schema for truediv ops involving List/Array dtypes (#21764) - Fix error due to race condition in file cache (#21753) - Clear NaNs due to zero-weight division in rolling var/std (#21761) - Allow init from BigQuery Arrow data containing ExtensionType cols with irrelevant metadata (#21492) - Disallow cast from boolean to categorical/enum (#21714) - Don't check sortedness in `join_asof` when 'by' groups supplied, but issue warning (#21724) - Incorrect multithread path taken for aggregations (#21727) - Disallow cast to empty Enum (#21715) - Fix `list.mean` and `list.median` returning Float64 for temporal types (#21144) - Incorrect (FixedSize)ListArrayBuilder gather implementation (#21716) - Always fallback in SkipBatchPredicate (#21711) - New streaming multiscan deadlock (#21694) - Ensure new-streaming join BuildState is correct even if never fed morsels (#21708) - IO plugin; support empty iterator (#21704) - Support nulls in multi-column sort (#21702) - Window function check length of groups state (#21697) - Support 128 sum reduction on new streaming (#21691) - IPC round-trip of list of empty view with non-empty bufferset (#21671) - Variance can never be negative (#21678) - Incorrect loop length in new-streaming group by (#21670) - Right join on multiple columns not coalescing left\_on columns (#21669) - Casting Struct to String panics if n\_chunks > 1 (#21656) - Fix`Future attached to different loop` error on `read_database_uri` (#21641) - Fix deadlock in cache + hconcat (#21640) - Properly handle phase transitions in row-wise sinks (#21600) - Enable new streaming memory sinks by default (#21589) - Always use global registry for object (#21622) - Check enu _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.25.2]_