🚀 Performance improvements
- CSV reading memory usage tests and fixes (#15422)
- avoid double-allocation in rolling_apply_agg_window (#15423)
- Make LogicalPlan immutable (#15416)
- Add non-order preserving variable row-encoding (#15414)
- Use row-encoding for multiple key group by (#15392)
✨ Enhancements
- Supports
explode_by_offsets
for decimal (#15417) - Add
read_clipboard
andDataFrame.write_clipboard
(#15272) - Add
null_on_oob
parameter toexpr.list.get
(#15395) - make Series.__bool__ error message Rusttier (#15407)
- CSV-writer escape carriage return (#15399)
🐞 Bug fixes
- datetime operations (e.g. .dt.year) were raising when null values were backed by out-of-range integers (#15420)
- Ensure Binary -> Binview cast doesn't overflow the buffer size (#15408)
- Don't prune alias in function subtree (#15406)
- Return 0 for
n_unique()
in group-by context when group is empty (#15289) - Unset UpdateGroups after group-sensitive expression (#15400)
to_any_value
should supports all LiteralValue type (#15387)- Hash failure combining hash of two numeric columns containing equal values (#15397)
- Add FixedSizeBinary to arrow field conversion (#15389)
- Conversion of expr_ir in partition fast path (#15388)
- fix panic when doing a scan_parquet with hive partioning (#15381)
sort
for series with unsupported dtype should raise instead of panic (#15385)
📖 Documentation
- Added example for
explode
mapping strategy inpl.Expr.over
(#15402) - Add
outer_coalesce
join strategy in the user guide (#15405) - Change the example to series for
series/array.py
(#15383) - Add "See Also" for
arg_sort
andarg_sort_by
(#15348)
🛠️ Other improvements
- make dsl immutable and cheap to clone (#15394)
- use recursive crate, add missing recursive tag (#15393)
- Update CODEOWNERS (polars-sql) (#15384)
Thank you to all our contributors for making this release possible!
@CanglongCl, @JamesCE2001, @MarcoGorelli, @Sol-Hee, @alexander-beedie, @dependabot, @dependabot[bot], @itamarst, @kszlim, @mcrumiller, @nameexhaustion, @orlp, @reswqa, @ritchie46, @rob-sil and @thomaslin2020