🏆 Highlights
- Add a low-friction
sql
method for DataFrame and LazyFrame (#15783)
🚀 Performance improvements
- Don't rechunk in parallel collection (#15907)
- Improve non-trivial list aggregations (#15888)
- Ensure we hit specialized gather for binary/strings (#15886)
- Limit the cache size for
to_datetime
(#15826) - skip initial null items and don't recompute
slope
ininterpolate
(#15819)
✨ Enhancements
- don't require pyarrow for converting pandas to Polars if all columns have simple numpy-backed datatypes (#15933)
- Add option to disable globbing in csv (#15930)
- Add option to disable globbing in parquet (#15928)
- Expressify
dt.round
(#15861) - Improve error messages in context stack (#15881)
- Add dynamic literals to ensure schema correctness (#15832)
- add timestamp time travel in delta scan/read (#15813)
🐞 Bug fixes
- Set default limit for String column display to 30 and fix edge cases (#15934)
- Change recognition of numba ufunc (#15916)
- series.search_sorted could support more types of input (#15940)
- Remove ffspec from parquet reader (#15927)
- avoid WRITE+EXEC for CPUID check (#15912)
- fix inconsistent decimal formatting (#15457)
- Preserve NULLs for
is_not_nan
(#15889) - double projection check should only take the upstream projections into account (#15901)
- Ensure we don't create invalid frames when combining unit lit + … (#15903)
- Clear cached rename schema (#15902)
- Fix OOB in struct lit/agg aggregation (#15891)
- Refine interaction of "schema_overrides" with
read_excel
when using "calamine" engine (#15827) - Don't modify user-supplied
storage_options
dict (take a shallow-copy) (#15859) - create (q)cut labels in fixed order (#15843)
- Tag
shrink_dtype
as non-streaming (#15828)
📖 Documentation
- improve graphviz install documentation/error message (#15791)
- Extend docstring examples for asof_join (#15810)
📦 Build system
- Don't import jemalloc (#15942)
- Use default allocator for lts-cpu (#15941)
- replace all macos-latest referrals with macos-13 (#15926)
- pin mimalloc and macos-13 (#15925)
- use jemalloc in lts-cpu (#15913)
- Update Cargo.lock (#15865)
- Bump
ruff
version and improvemake clean
on the Python side (#15858) - Exclude
rust-toolchain.toml
from wheels (#15840)
🛠️ Other improvements
- Replace copy/paste import handling with
import_optional
utility function (#15906) - Reorganize from_iter and dispatch to collect_ca when possible (#15904)
- More PyO3 0.21 bound APIs (#15872)
- Improve type-coercion (#15879)
- Move type coercion to IR conversion phase (#15868)
- Fix Python test coverage upload (#15853)
- More upgrades to PyO3 0.21 Bound<> APIs (#15790)
- Use uv for installing Python dependencies in CI (#15848)
- Update benchmark tests (#15825)
Thank you to all our contributors for making this release possible!
@JulianCologne, @MarcoGorelli, @NedJWestern, @NexVeridian, @alexander-beedie, @deanm0000, @dependabot, @dependabot[bot], @ion-elgreco, @itamarst, @jr200, @nameexhaustion, @orlp, @reswqa, @ritchie46 and @stinodego