🚀 Performance improvements
- Optimise
BytecodeParserusage fromwarn_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_idto a native streaming node (#23894) - Pass
endpoint_urlloaded fromCredentialProviderAWStoscan/write_delta(#23812) - Dispatch
scan_icebergto native by default (#23912) - Lower
unique_countsandvalue_countsto streaming engine (#23890) - Support initializing from
__arrow_c_schema__protocol inpl.Schema(#23879) - Better handle broken local package environment in
show_versions(#23885) - Implement
dt.days_in_monthfunction (#23119) - Making
Expr.rolling_*_bymethods available topl.Series(#23742) - Fix errors on native
scan_iceberg(#23811) - Reinterpret binary data to fixed size numerical array (#22840)
- Make
rolling_mapserializable (#23848) - Ensure
CachingCredentialProviderreturns copied credentials dict (#23817) - Change typing for
.remote()fromLazyFrameExttoLazyFrameRemote(#23825) - Implement
repeat_byforArrayandNull(#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
BytecodeParseropcode awareness for upcoming Python 3.14 (#23782)
🐞 Bug fixes
- Categorical namespace functions fail on
Enumcolumns (#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_csvignoring Decimal schema for header-only data (#23886) - Ensure
collect()native Iceberg always scans latest when nosnapshot_idis 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 BYqueries (#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_idxparameter (#23843) - Allow encoding of
pl.Enumwith smaller physicals (#23829) - Filter sorted flag from physical in CategoricalChunked (#23827)
- Remove accidental todo! in repeat node (#23822)
- Make
meta.popoperate onExpronly (#23808) - Stack overflow in
DslPlanserde (#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
pyo3documentation 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 requirementson Python 3.13 (#23810) - Add pyiceberg to dev dependencies (#23791)
🛠️ Other improvements
- Ensure
clippyandrustfmtrun in CI when changingpyo3-polars(#23930) - Fix pyo3-polars proc-macro re-exports (#23918)
- Rewrite
evaluate_on_groupsfor.gather/.get(#23700) - Move Python C API to
python-polars(#23876) - Improve/fix internal
LRUCacheimplementation 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
typospackage (#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