## pola-rs/polars — rs-0.52.0…rs-0.53.0

_610+ commits._

### Features
- **feat: Add primitive filter -> agg lowering in streaming GroupBy (#26459)** (9d4f362)
- **feat: Support for the SQL `FETCH` clause (#26449)** (6517935)
- **feat: Add get() to retrieve a byte from binary data (#26454)** (35b2edf)
- **feat: Remove with_context in SQL lowering (#26416)** (8425c75)
- **feat: Avoid OOM for scan_ndjson and scan_lines if input is compressed and negative slice (#26396)** (37aa73a)
- **feat(rust): Add JoinBuildSide (#26403)** (44e79da)
- **feat: Add extensive configuration documentation (#26386)** (d42f3ec)
- **feat: Support annoymous agg in-mem (#26376)** (628093e)
- **feat(rust): Expose `FunctionIR::Hint` in the python visitor (#26385)** (82a4fc3)
- **feat: Add unstable `arrow_schema` parameter to `sink_parquet` (#26323)** (a4b1365)
- **feat: Improve error message formatting for structs (#26349)** (fc6bd4b)
- **feat: Remove parquet field overwrites (#26236)** (e154475)
- **feat: Improved disambiguation for qualified wildcard columns in SQL projections (#26301)** (e5ac5b5)
- **feat: Expose `upload_concurrency` through env var (#26263)** (e3a6cf7)
- **feat: Allow quantile to compute multiple quantiles at once (#25516)** (7b59d7c)
- **feat: Allow empty LazyFrame in `LazyFrame.group_by(...).map_groups` (#26275)** (0f85c22)
- **feat: Use delta file statistics for batch predicate pushdown (#26242)** (222454a)
- **feat: Add streaming UnorderedUnion (#26240)** (a31fd50)
- **feat: Implement compression support for sink_ndjson (#26212)** (ee3d943)
- **feat: Add unstable record batch statistics flags to `{sink/scan}_ipc` (#26254)** (c6d42b4)
- **feat(python): Support CSEE for python UDFs on the same adress (#26253)** (90454a8)
- **feat: Cloud backoff configuration via `storage_options` (#26204)** (ced6e13)
- **feat: Use same sort order for expanded paths across local / cloud / directory / glob (#26191)** (5ae6d8d)
- **feat(rust): Add streaming merge-join (#25964)** (a98888e)
- **feat: Serialize optimization flags for cloud plan (#26168)** (c8e4263)

### Fixes
- **fix(python): Fix type-hint for Series.quantile (#26422)** (8a81b0e)
- **perf: Don't always rechunk on gather of nested types (#26478)** (1fdbd1f)
- **fix: Do not overwrite used names in cluster_with_columns pushdown (#26467)** (4207168)
- **fix: Do not mark output of concat_str on multiple inputs as sorted (#26468)** (052e68f)
- **fix: Fix CSV schema inference content line duplication bug (#26452)** (d0ca22b)
- **fix: Fix InvalidOperationError using `scan_delta` with filter (#26448)** (c4b5b1d)
- **fix: Alias giving missing column after streaming GroupBy CSE (#26447)** (5fd09dd)
- **fix: Ensure `by_name` selector selects only names (#26437)** (c951e87)
- **fix: Restore compatibility of strings written to parquet with pyarrow filter (#26436)** (0c179b5)
- **fix: Update schema in cluster_with_columns optimization (#26430)** (db0d68f)
- **fix: Fix negative slice in groups slicing (#26442)** (f3b583e)
- **fix: Don't run CPU check on aarch64 musl (#26439)** (791ce89)
- **fix(python): Fixed annotations shadowed by class methods (#26356)** (fa7e3da)
- **fix(python): Fix `selector` match patterns for multiline column names (#26320)** (c1c140f)
- **fix: Correct off-by-one in RLE row counting for nullable dictionary-encoded columns (#26411)** (72d7f0f)
- **fix: Support very large integers in env var limits (#26399)** (2eddfda)
- **fix: Fix PlPath panic from incorrect slicing of UTF8 boundaries (#26389)** (8b8dc1e)
- **fix: Fix Float dtype for spearman correlation (#26392)** (4fe40f9)
- **fix: Fix optimizer panic in right joins with type coercion (#26365)** (e3795eb)
- **fix: Don't serialize retry config from local environment vars (#26289)** (8097110)
- **fix: Fix `PartitionBy` with scalar key expressions and `diff()` (#26370)** (ada1843)
- **fix: Add {Float16, Float32} -> Float32 lossless upcast (#26373)** (2c4e93e)
- **fix: Fix panic using `with_columns` and `collect_all` (#26366)** (27c1f58)
- **fix: Add multi-page support for writing dictionary-encoded Parquet columns (#26360)** (56a283f)
- **fix: Ensure slice advancement when skipping non-inlinable values in `is_in` with inlinable needles (#26361)** (6226887)
- **fix: Pin `xlsx2csv` version temporarily (#26352)** (06112c6)
- **perf: Enable zero-copy object_store `put` upload for IPC sink (#26288)** (14aa43c)
- **fix: Bugs in ViewArray total_bytes_len (#26328)** (fca0389)
- **fix: Overflow in i128::abs in Decimal fits check (#26341)** (83073e7)
- **fix: Make Expr.hash on Categorical mapping-independent (#26340)** (72afc3a)
- **fix: Clone shared GroupBy node before mutation in physical plan creation (#26327)** (40c171f)
- **fix(python): Fixed "sheet_name" typing for `read_ods` and `read_excel` (#26317)** (fc7f412)
- **perf: Resolve file schema's and metadata concurrently (#26325)** (4fb3dd9)
- **fix(python): Improve Polars dtype inference from Python `Union` typing (#26303)** (fc812a8)
- **fix(rust): Fix lazy evaluation of replace_strict by making it fallible (#26267)** (ac69726)
- **fix: Consider the "current location" of an item when computing `rolling_rank_by` (#26287)** (696314e)
- **fix: Reset `is_count_star` flag between queries in collect_all (#26256)** (803b8e4)
- **fix: Fix incorrect is_between filter on scan_parquet (#26284)** (bfb06e4)
- **perf: Run elementwise CSEE for the streaming engine (#26278)** (2bd7b34)
- **fix(python): Make polars compatible with ty (#26270)** (c8c92de)
- **fix: Lower AnonymousStreamingAgg in group-by as aggregate (#26258)** (8a88b38)
- **perf: Disable morsel splitting for fast-count on streaming engine (#26245)** (0bc8b92)
- **fix: Avoid overflow in `pl.duration` scalar arguments case (#26213)** (4a6f20c)
- **fix: Broadcast arr.get on single array with multiple indices (#26219)** (8eadc50)
- **fix: Fix panic on CSPE with sorts (#26231)** (9f9dee8)
- **perf: Implement streaming decompression for scan_ndjson and scan_lines (#26200)** (f0ddb5f)
- **fix(rust): Fix UB in `DataFrame::transpose_from_dtype` (#26203)** (4fba8cf)
- **fix: Eager `DataFrame.slice` with negative offset and `length=None` (#26215)** (236f0e3)
- **fix: Use correct schema side for streaming merge join lowering (#26218)** (881e74e)
- **fix(rust): Implement expression keys for merge-join (#26202)** (943b7ee)
- **fix: Overflow panic in `scan_csv` with multiple files and `skip_rows + n_rows` larger than total row count (#26128)** (838588f)
- **perf: Improve string slicing performance (#26206)** (c6dfa94)
- **perf: Refactor `scan_delta` to use python dataset interface (#26190)** (5cd0388)
- **fix: Respect `allow_object` flag after cache (#26196)** (f16dc35)
- **fix: Raise error on non-elementwise PartitionBy keys (#26194)** (c9d1ce7)
- **perf: Add dedicated kernel for group-by `arg_max/arg_min` (#26093)** (99f0e43)
- **fix: Allow ordered categorical dictionary in scan_parquet (#26180)** (6e4ce4f)
- **fix: Allow excess bytes on IPC bitmap compressed length (#26176)** (d1be97e)
- **fix(rust): Address buggy quadratic scaling fix in scan_csv (#26175)** (e16f732)
- **perf: Generalize Bitmap::new_zeroed opt for Buffer::zeroed (#26142)** (b2c8f00)
- **perf: Reduce fs stat calls in path expansion (#26173)** (54a7fb2)

### Backend
- **Rust Polars 0.53.0 (#26485)** (16c0d99)
- **Python Polars 1.38.1 (#26472)** (50a3bfb)
- **Python Polars 1.38.0 (#26400)** (e55c3b0)
- **refacotr(rust): Clarify IPC buffer read limit/length paramter (#26334)** (c2676f8)

### Tests
- **test(python): Remove the `POLARS_IDEAL_MORSEL_SIZE` monkeypatching in the parametric merge-join test (#26418)** (32dbe12)
- **test: Ensure local doctests skip `from_torch` if module not installed (#26405)** (3a1e0a0)
- **test: Add dtype test coverage for delta predicate filter (#26291)** (c623d06)

### Docs
- **docs(python): Add `sink_delta` to API reference (#26446)** (3a4528f)
- **docs(rust): Fix typo in max_by docstring (#26404)** (63caa63)
- **docs(python): Fix `Expr.get` referencing incorrect dtype for `index` parameter (#26364)** (fedfb86)
- **docs(python): Fix `Expr.quantile` formatting (#26351)** (f5e1f18)
- **docs(python): Drop `sphinx-llms-txt` extension (#26285)** (1007a4b)
- **docs: Remove deprecated `cublet_id` (#26260)** (1a14e00)
- **docs: Update for new release (#26255)** (d6bae28)
- **docs: Update MCP server section with new URL (#26241)** (3c26711)
- **docs: Fix unmatched paren and punctuation in pandas migration guide (#26251)** (ff04975)
- **docs: Add observatory database_path to docs (#26201)** (cc3330f)

### Chore
- **refactor(rust): Move IO source metrics instrumentation to `PolarsObjectStore` (#26414)** (28b0440)
- **chore(python): Upgraded `ruff`, `mypy`, `typos` (#26476)** (e3efd86)
- **refactor: More SQL to IR conversion `execute_isolated` (#26455)** (3b9e87d)
- **refactor: Cleanup unused attributes in optimizer (#26464)** (3832c8f)
- **refactor: Use `Expr::Display` as catch all for IR - DSL asymmetry (#26471)** (a166aef)
- **build: Bump time from 0.3.44 to 0.3.47 (#26457)** (c067124)
- **chore(python): Ignore pytz in mypy (#26441)** (e2585ac)
- **refactor(rust): Move IO metrics struct to `polars-io` and use new timer (#26397)** (3075b7d)
- **refactor(rust): Reduce blocking on computational executor threads in multiscan init (#26407)** (9908bce)
- **chore: Cleanup the parametric merge-join test (#26413)** (c1764bc)
- **build: Bump bytes from 1.11.0 to 1.11.1 (#26409)** (e1612c2)
- **chore(python): Change linked timezones in test suite to canonical timezones (#26310)** (ee09c97)
- **chore: Implement various deprecations (#26314)** (15e286a)
- **refactor(rust): Refactor `MinBy` and `MaxBy` as `IRFunctions` (#26307)** (378bbb8)
- **chore(rust): Rename `Operator::Divide` to `RustDivide` (#26339)** (a4da1ac)
- **ci: Properly disable the Pyodide tests (#26382)** (c7217be)
- **refactor(rust): Add LiveTimer (#26384)** (717e5d7)
- **refactor(rust): Use derived serialization on `PlRefPath` (#26167)** (3a193a7)
- **refactor(rust): Add metadata to `ArrowSchema` struct (#26318)** (d634246)
- **refactor: Remove unused field (#26367)** (5ef138e)
- **refactor: Fix runtime nesting (#26359)** (119b8bf)
- **chore: Remove `xlsx2csv` dependency pin (#26355)** (43660ca)
- **refactor(rust): Allow unchecked IPC reads (#26354)** (4bd35db)
- **refactor: Use outer runtime if exists in to_alp (#26353)** (09e6017)
- **chore: Make CategoricalMapping::new pub(crate) to avoid misuse (#26308)** (9079e20)
- **refactor(rust): Improve accuracy of active IO time metric (#26315)** (13b7851)
- **refactor(rust): Mark `VarState` as `repr(C)` (#26309)** (8b99db8)
- **refactor(rust): IO metrics for streaming Parquet / IPC sources (#26300)** (2be90a4)
- **refactor(rust): Replace panicking index access with error handling in `dictionaries_to_encode` (#26059)** (832d35c)
- **refactor(rust): Remove unnecessary match and move early return in testing (#26297)** (6bd0620)
- **chore(rust): Add property-based tests for `Scalar::cast_with_options` (#25744)** (339a116)
- **chore: Add AI policy (#26286)** (74ae029)
- **chore(python): Unpin "pandas<3" in dev dependencies (#26249)** (a408a74)
- **refactor(rust): Remove MemSlice (#26259)** (8a9575e)
- **refactor(rust): Remove recursion from `upsample_impl` (#26250)** (3e39d23)
- **refactor: Remove all non CSV fast-count paths (#26233)** (5dd9b23)
- **refactor(rust): Replace MemReader with Cursor (#26216)** (fc09271)
- **chore(python): Pin pandas to 2.x for now (#26221)** (9c7857b)
- **refactor(rust): Add `serde(default)` to new CSV compression fields (#26210)** (e26c121)
- **chore(python): Remove unnecessary xfail (#26199)** (a69b7ca)
- **chore(rust): Add a couple of `SAFETY` comments in merge-join node (#26197)** (69a3474)
- **build: Address remaining Python 3.14 issues with `make requirements-all` (#26195)** (f9ac82e)
- **refactor(rust): Expose physical plan `NodeStyle` (#26184)** (4cf4666)
- **refactor: Ensure optimization flag modification happens local (#26185)** (8fe2761)
- **refactor(rust): Use NullChunked as default for Series (#26181)** (5d25d95)
- **chore(rust): In merge-sorted node, when buffering, request a stop on *every* unbuffered morsel (#26178)** (f4aa842)
- **build: Address a macOS-specific compile issue (#26172)** (7023499)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/pola-rs/polars?utm_source=github-action)._