# Polars 1.27.0 — Python Polars 1.27.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-04-09 - Version: 1.27.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.27.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.27.0 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'. --- - **changed** — Make bottom interval closed in hist - **changed** — Change Partition API to base_path and file_path - **added** — Add SPLIT_PART string function to the SQL interface - **changed** — Allow scalar expr in Expr.diff - **added** — Support additional unsigned int aliases in the SQL interface - **added** — Add STRING_TO_ARRAY function to the SQL interface - **added** — Add dt.is_business_day - **added** — Add an eager parameter to pl.cov - **added** — Add support for Int128 parsing and recognition to the SQL interface - **added** — Add an eager parameter to pl.coalesce - **added** — Add an eager parameter to pl.corr - **added** — Allow sinking to abstract python io and fs classes - **added** — Add add_alp_optimize_exprs to IRBuilder - **added** — Add cat.slice - **changed** — Support growing schema if line length increases during csv schema inference - **changed** — Replace thread unsafe GilOnceCell with Mutex - **changed** — Support modified dsl in file cache - **fixed** — Implode in agg - **deprecated** — Deprecate duplicate backward_fill and forward_fill interface ##### 💥 Breaking changes - Make bottom interval closed in `hist` (#22090) - Change Partition API to `base_path` and `file_path` (#21888) ##### 🚀 Performance improvements - Add CSE to streaming groupby (#22196) - Speed-up new streaming predicate filtering (#22179) - Speedup new-streaming file row count (#22169) - Fix quadratic behavior when casting Enums (#22008) - Lower is\_in to bitmap-output semi-join in new streaming engine (#21948) - Fast path for empty inner join (#21965) - Add native semi/anti join in new streaming engine (#21937) - Cache regex compilation globally (#21929) ##### ✨ Enhancements - Add `SPLIT_PART` string function to the SQL interface (#22158) - Allow scalar expr in `Expr.diff` (#22142) - Support additional unsigned int aliases in the SQL interface (#22127) - Add `STRING_TO_ARRAY` function to the SQL interface (#22129) - Add dt.is\_business\_day (#21776) - Add an `eager` parameter to `pl.cov` (#22098) - Add support for `Int128` parsing/recognition to the SQL interface (#22104) - Add an `eager` parameter to `pl.coalesce` (#22092) - Add an `eager` parameter to `pl.corr` (#22097) - Allow sinking to abstract python `io` and `fs` classes (#21987) - Add `add_alp_optimize_exprs` to `IRBuilder` (#22061) - Add `cat.slice` (#21971) - Support growing schema if line lenght increases during csv schema inference (#21979) - Replace thread unsafe `GilOnceCell` with `Mutex` (#21927) - Support modified dsl in file cache (#21907) ##### 🐞 Bug fixes - Implode in agg (#22197) - Reduce GIL hold time for IO plugins in new-streaming (#22186) - Enhance predicate validation and cast safety in `join_where` (#22112) - Handle Parquet with compressed empty DataPage v2 (#22172) - Schema error during lowering (#22175) - Rewrite unroll of overlapping groups to mitigate out of range index panic (#22072) - Incorrect rounding for very large/small numbers (#22173) - Allow set input to `list.set_*` operations (#22163) - Deadlock in join due to rayon nested task-stealing (#22159) - Mark `Expr.repeat_by` as elementwise (#22068) - Fix csv serializer panic by supporting ScalarColumn in as\_single\_chunk (#22146) - Raise an error if a number doesn't have associated unit in duration strings (#22035) - Add `i128` as supertype to boolean (#22138) - Fix panic when constructing DF from pyarrow due to duplicate field names (#22114) - Add broadcasts and error messages for many elementwise operations (#22130) - Throw error for `n=0` on `list.gather_every` (#22122) - Throw error for unsupported rolling operations (#22121) - Error on unequal length `str.to_integer` arguments (#22100) - Make bottom interval closed in `hist` (#22090) - Relative path resolution for plugin libraries (#21911) - Avoiding panic with striptime for out-of-bounds dates (#21208) - Join revmaps for categoricals in `merge_sorted` (#21976) - Fix glob expansion matching extra files (#21991) - Ensure SQL dot-notation for nested column fields resolves correctly (#22109) - Parquet filter performance regression from multiscan dispatch (#22116) - Panic for unequal length `ewm_mean_by` args (#22093) - Add scalarity checks to `pl.repeat` (#22088) - Type check `n` parameter of `pl.repeat` (#22071) - Mark `bitwise_{count,leading,trailing}_{ones,zeros}` as elementwise (#22044) - Mark `pl.*_ranges` functions correctly as element-wise (#22059) - Correctly type check `pl.arctan2` (#22060) - Mark `pl.business_day_count` as elementwise (#22055) - Check input python type for `str.extract_groups` (#22032) - Check types for `fill_char` in `str.pad_{start,end}` (#22036) - Mark `str.to_decimal` properly as non-elementwise (#22040) - Documented return type for `bin.encode` and `bin.decode` (#22022) - Revert #22017 and improve block(\_in\_place)\_on doc comment (#22031) - Remove outdated depth warning (#22030) - Expression pl.concat was incorrectly marked as elementwise (#22019) - Use block\_in\_place\_on to start streaming (#22017) - Panic on empty aggregation in streaming (#22016) - Error instead of _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.27.0]_