# Polars 1.43.0 — Python Polars 1.43.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2026-07-21 - Version: 1.43.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.43.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.43.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'. --- - **deprecated** — Deprecate casting numeric types to categoricals - **deprecated** — Deprecate cat.get_categories() and cat.to_local() - **deprecated** — Deprecate LazyFrame.profile() - **deprecated** — Deprecate casts from non-nested dtypes into Lists - **deprecated** — Deprecate bitwise ops between integers and booleans - **deprecated** — Deprecate list/arr.to_struct() calls that don't pass field names - **changed** — Rename missing_utf8_is_empty_string to empty_string_is_null - **changed** — Split multiplexers that directly scan from in-memory DataFrame - **changed** — Make DNS cache global - **changed** — Pre-partition on left, right and semi joins on hive partitioned data - **changed** — Rewrite inner joins on hive partitioned data to a union of partitions filtered joins - **added** — Add ewm_sum and ewm_sum_by - **added** — Add scan_arrow_c_stream - **added** — Support Iceberg field initial-default in native scan_iceberg - **added** — Add Series.degrees/radians and clarify trig functions use radians - **added** — Add list expression which consistently packs elements together into new List type - **added** — Add Expr.cat.to and Expr.cat.physical - **added** — Add POLARS_OOC_DISK_BUDGET_MB - **added** — Add build side preference parameter for join - **fixed** — Avoid panic when union slice skips all rows - **fixed** — Solve panic in dt.replace when there were multiple chunks ##### ⚠️ Deprecations - Deprecate casting numeric types to categoricals (#28349) - Deprecate `cat.get_categories()` and `cat.to_local()` (#28299) - Deprecate `LazyFrame.profile()` (#28275) - Deprecate casts from non-nested dtypes into Lists (#28193) - Deprecate bitwise ops between integers and booleans (#28186) - Deprecate `list/arr.to_struct()` calls that don't pass field names (#28243) - Rename `missing_utf8_is_empty_string` to `empty_string_is_null` (#28173) ##### 🚀 Performance improvements - Split multiplexers that directly scan from in-memory DataFrame (#28376) - Make DNS cache global (#28352) - Do not remove cache if predicates not pushed to all inputs (#28341) - Environment variable for logging slow DNS lookup (#28211) - Pre-partition on left, right and semi joins on hive partitioned data (#28374) - Rewrite inner joins on hive partitioned data to a union of partitions filtered joins (#28327) - Tighten redundant comparisons and propagate filter constraints (#27999) - Canonicalize predicates (#28212) - Remove excess memory copy in streaming IPC sink (#28141) - Parallelize scan\_iceberg resolve (#28168) - Chunk-aware morsel splitting on single-file IO sink (#27950) - Don't allocate for `full_null()` with small lengths (#28181) - Use monotonic deque for rolling min\_by/max\_by (O(n)) (#27436) ##### ✨ Enhancements - Pre-partition group-by on hive keys (#28444) - Add ewm\_sum and ewm\_sum\_by #28151 (#28215) - Serve stale records from object\_store DNS cache (#28256) - Make partition\_hive an opt flag (#28345) - Add `scan_arrow_c_stream` (#28340) - When displaying IRExprs, only add parentheses when needed for disambiguation (#28319) - Support Iceberg field `initial-default` in native `scan_iceberg` (#28324) - Show only differing dtypes in `assert_frame_equal` error (#27816) - Expose ewm and rolling \*\_by expressions in Python visitor (#28286) - More accurate rolling moments (#28309) - Remove hard block on native scan for Iceberg V3 tables (#28277) - Add Series.degrees/radians and clarify trig functions use radians (#22961) - Merge sorted with multikey (#28067) - Add `list` expression which consistently packs elements together into new List type (#27990) - Add `read_database` Arrow fast-path for "python-oracledb" (#28230) - Optimize joins with redundant equi-join keys (#28017) - Implement missing datetime options for `CastColumnsPolicy` (#28084) - Add Expr.cat.to and Expr.cat.physical (#28096) - Add POLARS\_OOC\_DISK\_BUDGET\_MB (#28045) - Add build side preference parameter for join (#28154) ##### 🐞 Bug fixes - Avoid panic when union slice skips all rows (#28420) - Solve panic in `dt.replace` when there were multiple chunks (#28437) - Propagate `is_scalar` from the input to the output of `.sort()` and `.sort_by()` (#28438) - Resolve CSV column names overwrite in DSL->IR conversion (#28383) - Avoid IEJoin rewrite for Categorical comparisons (#28427) - Do not rewrite `sort().reverse()` to `sort(descending=True)` when `maintain_order=True` (#28403) - Ensure BinaryView offset+len does not exceed i32::MAX where possible (#28048) - Invalid offset in strptime (#28388) - Incorrect schema type for decimal \<-> primitive division (#28373) - Panic in in-memory CSEE handling (#28371) - Fix offset in arrow ffi export of sliced struct arrays (#28369) - Fix cross filter not applied with sink and CSE (#28297) - Fix panic on projection pushdown with caches (#28280) - Fix `write_json()` null values in `Array` columns being written incorrectly as `null` (#28330) - Fix EntityTooSmall on sink\_ipc to S3 (#28255) - Raise error instead of silent wrapping for `select(len())` (#28355) - Float16 groupby aggregates (#28361) - Respect lexical ordering of Categorical in `top_k`/`bottom_k` (#28359) - Support dtype-list schema overrides in scan\_csv (#28226) - Resolve unknown type in fused multiply add (#28321) - Honor `aws_checksum_algorithm` when provided (#28328) - Remove usage of deprecated `pyarrow.feather.read_table` (#28323) - Fix regress _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.43.0]_