π Performance improvements
- Optimise
BytecodeParser
usage from warn_on_inefficient_map
(#23809)
- Lower extend_constant to the streaming engine (#23824)
- Lower pl.repeat to streaming engine (#23804)
- Remove redundant clone (#23771)
β¨ Enhancements
- Lower
rle_id
to a native streaming node (#23894)
- Pass
endpoint_url
loaded from CredentialProviderAWS
to scan/write_delta
(#23812)
- Dispatch
scan_iceberg
to native by default (#23912)
- Lower
unique_counts
and value_counts
to streaming engine (#23890)
- Support initializing from
__arrow_c_schema__
protocol in pl.Schema
(#23879)
- Better handle broken local package environment in
show_versions
(#23885)
- Implement
dt.days_in_month
function (#23119)
- Making
Expr.rolling_*_by
methods available to pl.Series
(#23742)
- Fix errors on native
scan_iceberg
(#23811)
- Reinterpret binary data to fixed size numerical array (#22840)
- Make
rolling_map
serializable (#23848)
- Ensure
CachingCredentialProvider
returns copied credentials dict (#23817)
- Change typing for
.remote()
from LazyFrameExt
to LazyFrameRemote
(#23825)
- Implement
repeat_by
for Array
and Null
(#23794)
- Add DeprecationWarning on passing physical ordering to Categorical (#23779)
- Pre-filtered decode and row group skipping with Iceberg / Delta / scans with cast options (#23792)
- Update
BytecodeParser
opcode awareness for upcoming Python 3.14 (#23782)
π Bug fixes
- Categorical namespace functions fail on
Enum
columns (#23925)
- Properly set sumwise complete on filter for missing columns (#23877)
- Restore Arrow-FFI-based Python<->Rust conversion in pyo3-polars (#23881)
- Group By with filters (#23917)
- Fix
read_csv
ignoring Decimal schema for header-only data (#23886)
- Ensure
collect()
native Iceberg always scans latest when no snapshot_id
is given (#23907)
- Writing List(Array) columns to JSON without panic (#23875)
- Fill Iceberg missing fields with partition values if present in metadata (#23900)
- Create file for streaming sink even if unspawned (#23672)
- Update cloud testing environment (#23908)
- Parquet filtering on multiple RGs with literal predicate (#23903)
- Incorrect datatype passed to libc::write (#23904)
- Properly feature gate TZ_AWARE_RE usage (#23888)
- Improve identification of "non group-key" aggregates in SQL
GROUP BY
queries (#23191)
- Spawning tokio task outside reactor (#23884)
- Correctly raise DuplicateError on asof_join with suffix="" (#23864)
- Fix errors on native
scan_iceberg
(#23811)
- Fix index out of bounds panic filtering parquet (#23850)
- Fix error on empty range requests (#23844)
- Fix handling of hive partitioning
hive_start_idx
parameter (#23843)
- Allow encoding of
pl.Enum
with smaller physicals (#23829)
- Filter sorted flag from physical in CategoricalChunked (#23827)
- Remove accidental todo! in repeat node (#23822)
- Make
meta.pop
operate on Expr
only (#23808)
- Stack overflow in
DslPlan
serde (#23801)
- Clear credentials cached in Python when rebuilding object store (#23756)
- Datetime selectors with mixed timezone info (#23774)
- Support i128 in asof join (#23770)
- Remove sleep for credential refresh (#23768)
π Documentation
- Improve StackOverflow links in contributing guide (#23895)
- Fix
pyo3
documentation page link (#23839)
- Document the pureness requirements of udfs (#23787)
- Correct the
name.*
methods on their removal of aliases (#23773)
π¦ Build system
- Workaround for pyiceberg
make requirements
on Python 3.13 (#23810)
- Add pyiceberg to dev dependencies (#23791)
π οΈ Other improvements
- Ensure
clippy
and rustfmt
run in CI when changing pyo3-polars
(#23930)
- Fix pyo3-polars proc-macro re-exports (#23918)
- Rewrite
evaluate_on_groups
for .gather
/ .get
(#23700)
- Move Python C API to
python-polars
(#23876)
- Improve/fix internal
LRUCache
implementation and move into "_utils" module (#23813)
- Relax constraint on maximum Python version for
numba
(#23838)
- Automatically tag PRs mentioning "SQL" with the appropriate label (#23816)
- Update
typos
package (#23818)
- Fix typos path (#23803)
- Remove
deserialize_with_unknown_fields
(#23802)
- Add pyiceberg to dev dependencies (#23791)
- Remove old schema file (#23798)
- Mark more tests as ready for cloud (#23743)
- Reduce required deps for pyo3-polars (#23761)
Thank you to all our contributors for making this release possible!
@JakubValtar, @Kevin-Patyk, @Liyixin95, @alexander-beedie, @cgevans, @cmdlineluser, @coastalwhite, @eitsupi, @gfvioli, @itamarst, @jimmmmmmmmmmmy, @kdn36, @math-hiyoko, @mcrumiller, @mpasa, @mrkn, @nameexhaustion, @orlp, @pka, @pomo-mondreganto, @ritchie46 and @stijnherfst