# Polars 1.35.1 — Python Polars 1.35.1 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-10-30 - Version: 1.35.1 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.35.1 - Permalink: https://whatsnew.fyi/product/polars/releases/1.35.1 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** — Don't recompute full rolling moment window when NaNs/nulls leave the window - **changed** — Skip filtering scan IR if no paths were filtered - **changed** — Optimize ipc stream read performance - **added** — Support BYTE_ARRAY backed Decimals in Parquet - **changed** — Allow glimpse to return a DataFrame - **added** — Add allow_empty flag to item - **fixed** — The SQL interface should use logical, not bitwise, behaviour for unary NOT operator - **fixed** — Fix panic if scan predicate produces 0 length mask - **fixed** — Ensure SQL table alias resolution checks against CTE aliases on fallback - **fixed** — Fix panic in group_by_dynamic with group_by and multiple chunks - **fixed** — Fix panic when using struct field as join key - **fixed** — Allow broadcast in group_by for ApplyExpr and BinaryExpr - **fixed** — Fix field metadata for nested categorical PyCapsule export - **fixed** — Block predicate pushdown when group_by key values are changed - **fixed** — Fix group-by aggregation problems caused by AmortSeries - **fixed** — Don't push down predicates passed inserted cache nodes - **fixed** — Allow for negative time in group_by_dynamic iterator - **changed** — Change group length mismatch error to ShapeError ##### 🚀 Performance improvements - Don't recompute full rolling moment window when NaNs/nulls leave the window (#25078) - Skip filtering scan IR if no paths were filtered (#25037) - Optimize ipc stream read performance (#24671) ##### ✨ Enhancements - Support BYTE\_ARRAY backed Decimals in Parquet (#25076) - Allow `glimpse` to return a `DataFrame` (#24803) - Add `allow_empty` flag to `item` (#25048) ##### 🐞 Bug fixes - The `SQL` interface should use logical, not bitwise, behaviour for unary "NOT" operator (#25091) - Fix panic if scan predicate produces 0 length mask (#25089) - Ensure SQL table alias resolution checks against CTE aliases on fallback (#25071) - Panic in `group_by_dynamic` with `group_by` and multiple chunks (#25075) - Minor improvement to internal `is_pycapsule` utility function (#25073) - Fix panic when using struct field as join key (#25059) - Allow broadcast in `group_by` for `ApplyExpr` and `BinaryExpr` (#25053) - Fix field metadata for nested categorical PyCapsule export (#25052) - Block predicate pushdown when `group_by` key values are changed (#25032) - Group-By aggregation problems caused by `AmortSeries` (#25043) - Don't push down predicates passed inserted cache nodes (#25042) - Allow for negative time in `group_by_dynamic` iterator (#25041) ##### 📖 Documentation - Fix typo in public dataset URL (#25044) ##### 🛠️ Other improvements - Disable recursive CSPE for now (#25085) - Change group length mismatch error to `ShapeError` (#25004) - Update toolchain (#25007) Thank you to all our contributors for making this release possible! @Kevin-Patyk, @Liyixin95, @alexander-beedie, @coastalwhite, @kdn36, @nameexhaustion, @orlp, @r-brink, @ritchie46 and @stijnherfst