# Polars 1.22.0 — Python Polars 1.22.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-02-08 - Version: 1.22.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.22.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.22.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** — Reduce sharing in stringview arrays in new-streaming equijoin - **changed** — Implement native Expr.count() on new-streaming - **changed** — Speed up list operations that use amortized_iter() - **changed** — Use Cow as output for rechunk and add rechunk_mut - **changed** — Reduce arrow slice mmap overhead - **changed** — Reduce conversion cost in chunked string gather - **changed** — Enable prefiltered by default for new streaming - **changed** — Enable parquet column expressions for streaming - **changed** — Deduplicate buffers again in stringview concat kernel - **added** — Add dedicated concatenate kernels - **changed** — Rechunk only once during join probe gather - **changed** — Change default memory prefetch to MADV_WILLNEED - **changed** — Remove cast to boolean after comparison in optimizer - **changed** — Speed up from_pandas when converting frame with multi-index columns - **added** — Add projection pushdown to new streaming multiscan - **added** — Implement join on struct dtype - **changed** — Use unique temporary directory path per user and restrict permissions - **added** — Enable ingest of objects supporting the PyCapsule interface via from_arrow - **added** — Enable new streaming multiscan for CSV - **added** — Add environment POLARS_MAX_CONCURRENT_SCANS in multiscan for new streaming - **fixed** — Fix Expr.over applying scale incorrectly for Decimal types ##### 🚀 Performance improvements - Reduce sharing in stringview arrays in new-streaming equijoin (#21129) - Implement native Expr.count() on new-streaming (#21126) - Speed up list operations that use amortized\_iter() (#20964) - Use Cow as output for rechunk and add rechunk\_mut (#21116) - Reduce arrow slice mmap overhead (#21113) - Reduce conversion cost in chunked string gather (#21112) - Enable prefiltered by default for new streaming (#21109) - Enable parquet column expressions for streaming (#21101) - Deduplicate buffers again in stringview concat kernel (#21098) - Add dedicated concatenate kernels (#21080) - Rechunk only once during join probe gather (#21072) - Micro-optimise internal `DataFrame` height and width checks (#21071) - Speed up from\_pandas when converting frame with multi-index columns (#21063) - Change default memory prefetch to MADV\_WILLNEED (#21056) - Remove cast to boolean after comparison in optimizer (#21022) - Split last rowgroup among all threads in new-streaming parquet reader (#21027) - Recombine into larger morsels in new-streaming join (#21008) - Improve `list.min` and `list.max` performance for logical types (#20972) - Ensure count query select minimal columns (#20923) ##### ✨ Enhancements - Add projection pushdown to new streaming multiscan (#21139) - Implement join on struct dtype (#21093) - Use unique temporary directory path per user and restrict permissions (#21125) - Enable ingest of objects supporting the PyCapsule interface via `from_arrow` (#21128) - Enable new streaming multiscan for CSV (#21124) - Environment `POLARS_MAX_CONCURRENT_SCANS` in multiscan for new streaming (#21127) - Ensure AWS credential provider sources AWS\_PROFILE from environment after deserialization (#21121) - Multi/Hive scans in new streaming engine (#21011) - Add `linear_spaces` (#20941) - IO plugins suppport lazy schema (#21079) - Add `write_table()` function to Unity catalog client (#21089) - Add `is_object` method to Polars `DataType` class (#21074) - Implement `merge_sorted` for binary (#21045) - Hold string cache in new streaming engine and fix row-encoding (#21039) - Add CredentialProviderAzure parameter to accept user-instantiated azure credential classes (#21047) - Expose unity catalog dataclasses and type aliases (#21046) - Support max/min method for Time dtype (#19815) - Implement a streaming merge sorted node (#20960) - Automatically use temporary credentials API for scanning Unity catalog tables (#21020) - Add negative slice support to new-streaming engine (#21001) - Allow for more RG skipping by rewriting expr in planner (#20828) - Rename catalog `schema` to `namespace` (#20993) - Add functionality to create and delete catalogs, tables and schemas to Unity catalog client (#20956) - Allow custom JSONEncoder for the `json_normalize` function, minor speedup (#20966) - Support passing `aws_profile` in `storage_options` (#20965) - Improved support for KeyboardInterrupts (#20961) - Make the available `concat` alignment strategies more generic (#20644) - Extract timezone info from python datetimes (#20822) - Add hint for `POLARS_AUTO_USE_AZURE_STORAGE_ACCOUNT_KEY` to error message (#20942) - Filter Parquet pages with `ParquetColumnExpr` (#20714) - Expose descending and nulls last in window order-by (#20919) ##### 🐞 Bug fixes - Fix `Expr.over` applying scale incorrectly for Decimal types (#21140) - Fix IO plugin predicate with failed serialization (#21136) - Ensure `lit` handles datetimes with tzinfo that represents a fixed offset from UTC (#21003) - Correctly implement take\_(opt\_)chunked\_unchecked for structs (#21134) - Restore printing backtraces on panics (#21131) - Use microseconds for Unity catalog datetime unit (#21122) - Fix incorrect output height for SQL `SELECT COUNT(*) FROM` (#21108) - Validate/coerce types for comparisons within join\_where predicates (#21049) - Do not auto-init credential providers if credential fetch returns error (#21090) - Fix `join_where` incorrectly dropping tra _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.22.0]_