NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2704 most downloaded on crates.io
Time related code for the Polars DataFrame library
Last release 2 months ago
06 Aug 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 3 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
83 releases · first in 2022
One column per quarter.
Add adaptive HTTP rate-limiter for cloud IO
Thank you to all our contributors for making this release possible!
@dancsi, @dsprenkels, @kdn36, @orlp and @ritchie46
Deprecate casts from string to temporal dtypes
This Releases' DSL matches Python 1.43.2.
len() to concat/union inputs (#28570)full_null() with small lengths (#28181)struct.drop() (#28666)SinkTypeIR::Partitioned (#28112)infer_schema_files parameter to scan_csv (#28440)assert_frame_equal error (#27816)list expression which consistently packs elements together into new List type (#27990)CastColumnsPolicy (#28084)IRFunctionExpr::Fused in the python node visitor (#27889)JOIN syntax (#27890)Expr.is_sorted (#26708)DataFrame.is_sorted() (#27870)sqrt/cbrt/pct_change/ewm_* with a Struct column (#28696)by column values in rolling_*_by (#27367)field in struct.with_fields with over (#28678)Utf8 and Binary (#28662)fill_null(strategy="min"/"max") uses lexical min/max (#28636)__arrow_c_stream__ (#28642)LargeList (#28632)Series(Array) (#28602)StringChunked substring kernels (#28573)Unknown(Int) and Unknown(Float) should result in Unknown(Float) (#28545)nulls_last after Expr.reverse() (#28572)SQLContext.execute() (#28549)nulls_last in function_expr_sortedness (#28544)NOT IN interaction with NULL values and joins (#28484)SUM and CORR aggregates return NULL for all-null inputs, add TOTAL (#28475)null_count_dtype helper between Delta and Iceberg, fixing SchemaError (#28479)dt.replace when there were multiple chunks (#28437)is_scalar from the input to the output of .sort() and .sort_by() (#28438)Unknown(_) in list/array arithmetic (#28411)sort().reverse() to sort(descending=True) when maintain_order=True (#28403)polars-plan from polars (#28396)write_json() null values in Array columns being written incorrectly as null (#28330)select(len()) (#28355)top_k/bottom_k (#28359)aws_checksum_algorithm when provided (#28328)Object dtype instead of creating invalid List(Object) (#28246)ewm_var/ewm_std value (#28235)rolling_rank position invalid if ost.len() < min_samples (#28142)select(len()) after groupby (#28108)replace when old/new contain Expr or object dtype values (#27433).explode() without empty_as_null argument (#28040)select(len()) incorrectly returned 0 when using scan_iceberg with pyiceberg as reader override (#28044)sink_* functions (#28042)dt.truncate and dt.round (#26120)file:// URIs with percent-encoded paths (#27876)[NOT] IN (subquery) to semi/anti join (#27888)sort.reverse() into single sort (#27918)Note truncated.
Nothing published for this version
Ignore ddof parameter in rolling_corr and deprecate
ScalarColumn in Column split_at (#27782)array.shift (#27740)list.sample(n) and list.sample(frac) (#27679)agg_n_unique (#27719){list,arr}.{unique,n_unique,reverse} to group_by engine (#27278)Series::is_sorted for logical / non-primitive types (#27567)list.shift (#27628)json_decode Datetime string parsing (#27559)to_numpy C-order via cache-blocked transpose (#27522)select(len()) for non-strict horizontal concat (#27516)is_in row-group pruning precise on null-containing haystacks (#27495)is_in row-group pruning precise on multi-value lists (#27475)drop_{nulls,nans} in streaming group_by aggregations (#27296)entropy to streaming reductions (#27174)interpolate (#27185)strptime with format=None (#27056)skew / kurtosis to streaming aggregations (#27176)drop_nulls().{first,last}() to {first,last}(ignore_nulls=True) (#27187)cut output Enum and mark as elementwise (#27173)cov and corr (#27008)maintain_order=True requirement in sink_delta (#27007)index_of to streaming engine (#26923)backward_fill (#26967)forward_fill (#26922).replace() from a single value (#26948)arg_{min,max} to streaming engine (#26845)scan_csv (#26637)scan_ndjson / scan_lines (#26563)AsOf join node (#26398)IR::Scan hive parts in the python node visitor (#27829)IRFunctionExpr::DynamicPred in the python visitor (#27616)is_inherently_nondeterministic helper for AExpr (#27687)/ operator in Polars SQL (#27391)FILTER clause for aggregate functions, and STRING_AGG (#27564)FileMetadata prunable for IR-plan dispatch (#27535)list.slice (#27487)null_on_oob in {Expr/Series}.gather (#27327)arr.eval on overflow boundaries (#27496)list.eval on overflow boundaries (#27483)SLICED UNION in LazyFrame explain (#27467)maintain_order parameter to merge_sorted (#27263)ignore_nulls to {list,arr}.{any,all} (#27186)is_unique to list/array dtypes (#27290)pl.merge_sorted operating on multiple frames (#27014)group_by() without key exprs (#27141)scan_delta (#26867).collect_schema() when arr.get() is out-of-bounds (#26866)Expr.reinterpret to all numeric types of the same size (#26401){min,max}_by (#26849)ARRAY init from typed literals (#26622)scan_iceberg() (#26826)make fresh command to the Makefile (#26809)LazyFrame.sink_iceberg (#26799)contains_dtype() method for Schema (#26661)truncate as a "to_zero" rounding mode (#26677)AExpr::Rolling in the python visitor (#26715)truncate Expression for numeric values (#26666)LPAD and RPAD string functions (#26631)SELECT query syntax (#26598)%.3f/%.6f/%.9f specifiers (#26075)assert_schema_equal in py-polars (#24869)scan_ndjson / scan_lines (#26563)cast_options for scan_parquet (#26492)sas_token in Azure credential provider (#26565)get() for binary Series (#26514)AsOf join node (#26398)sort_by in group_by (#27772)POLARS_ALLOW_NESTED_CSPE env var and make nested CSPE opt-in (#27765)credentialprovider cache key (#27712)Note truncated.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →