Releases: NVIDIA/cudf
Releases · NVIDIA/cudf
Release list
v26.08.00
What's Changed
🚨 Breaking Changes
- Enforce pandas 3.0 deprecations and subsequent related cuDF deprecations part 1 by @mroeschke in #20823
- Enforce Series.interpolate deprecations by @mroeschke in #20905
- Remove FutureWarning checks from series/test_pct_change by @mroeschke in #20904
- Enforce Series.replace argument deprecations by @mroeschke in #20903
- Enforce pandas 3 DataFrame/Series.first/last removal by @mroeschke in #20909
- Enforce pandas 3 fillna deprecation by @mroeschke in #20912
- Enforce pandas 3 timedelta frequency string deprecation by @mroeschke in #20915
- Enforce pandas 3 concat with empties deprecation by @mroeschke in #20916
- Enforce pandas 3
to_numeric(errors='ignore')deperecation by @mroeschke in #20920 - Enforce pandas 3 date_range(periods=) deprecation by @mroeschke in #20921
- Enforce pandas 3 resample deprecations by @mroeschke in #20923
- Enforce pandas 3 TimedeltaIndex/DatetimeIndex deprecations by @mroeschke in #20924
- Enforce pandas 3 future_stack argument switch by @mroeschke in #20926
- Remove pandas 3.0 Series.getitem int positional deprecation by @mroeschke in #20930
- Test pandas 3.0.0rc1 by @mroeschke in #20941
- Change
to_datetimeto match pandas-3 by @galipremsagar in #20913 - More misc cuDF classic test fixes for pandas 3 by @mroeschke in #21049
- Switch default string dtype by @galipremsagar in #20890
- Change CUDF_STRING_DTYPE to pandas.StringDtype for pandas 3.0 by @mroeschke in #21062
- Adjust cuDF grouby unit tests for existing pandas object types in pandas 3 by @mroeschke in #21081
- Fix StringDtype dask serialization in pandas 3 by @mroeschke in #21103
- Avoid object dtype in ColumnAccessor.to_pandas_index for pandas 3 by @mroeschke in #21110
- Move CategoricalDtype higher in cudf.dtype elif chain for pandas 3 by @mroeschke in #21129
- Match groupby idxmin/max skipna=True pandas 3.0 behavior with all null groups by @mroeschke in #21189
- Map numpy dtypes to new default string dtype in np_dtypes_to_pandas_dtypes for pandas 3 by @mroeschke in #21201
- Fix test_string_char_types for pandas 3 by @mroeschke in #21210
- Adjust more misc tests for pandas 3 by @mroeschke in #21228
- Preserve StringDtype correctly in StringColumn.to_pandas for pandas 3 by @mroeschke in #21206
- Update pandas pinnings in conda-forge recipes for pandas 3 by @mroeschke in #21302
- Update cudf_pandas proxies for pandas 3 by @mroeschke in #21606
- Change
date_rangetime unit inferencing logic by @galipremsagar in #21694 - Make copy-on-write the default for pandas3 by @vyasr in #21801
- Fix multiple repr issues in
cudfwithpandas-3.0by @galipremsagar in #21778 - Fix
replaceAPI & pytests by @galipremsagar in #21938 - Fix
cudf.pandaspytest failures by @galipremsagar in #22137 - Fix setitem dtype validation, NaT column inference, and boolean-dtype join by @galipremsagar in #22255
- Reject pd.NA string-to-object casts in pandas-compatible mode by @galipremsagar in #22295
- Align groupby apply/rolling defaults with pandas 3 by @galipremsagar in #22448
- Align cudf find_common_type with pandas for empty/bool/datetime+timedelta inputs by @galipremsagar in #22466
- Add validations in various code-paths by @galipremsagar in #22336
- Merge
pandas3feature branch intomainby @galipremsagar in #22518 - Forward-merge release/26.06 into main by @madsbk in #22585
- Remove deprecated
.values_hostproperty in cudf by @mroeschke in #22649 - Remove deprecated nvtext::edit_distance_matrix by @davidwendt in #22644
- Fix capture group handling in cudf::strings::findall by @davidwendt in #22408
- Removed deprecated multi-pattern overload of replace_re by @davidwendt in #22639
- Skip sum updates once SUM_WITH_OVERFLOW flag is set by @PointKernel in #22696
- Remove deprecated strings::like string_scalar API by @davidwendt in #22678
- Fix Categorical astype for nulls in pandas-compatible mode by @galipremsagar in #22652
- [cudf_streaming] Using rapidsmpf spill unspill partition by @nirandaperera in #22810
- Change behavior for regex class pattern [a-m-z] by @davidwendt in #22601
- Fix groupby
any/allon null-containing string columns by @galipremsagar in #22926 - Align cudf indexing/setitem validation and alignment with pandas by @galipremsagar in #22912
- refactor(streaming): flatten namespaces and rename to snake_case by @vyasr in #22909
- [cudf_streaming] rapidsmpf backrefmixin API changes by @nirandaperera in #22911
- Refactor packed metadata to use an explicit table header by @madsbk in #22951
- Support
skipnain groupby reductions (first/last, sum/prod/mean/median/min/max, idxmin/idxmax) by @galipremsagar in #22925 - Make
pylibcudf.Table.columns()return a tuple by @madsbk in #23040 - Align DataFrame.reindex dtype and validation behavior with pandas by @galipremsagar in #22914
- Match pandas suffix handling in merge (None/non-string suffixes, invalid-container TypeError) by @galipremsagar in #23059
- Rapidsmpf logger API changes by @nirandaperera in #22972
- Refactor
OrderSchemeto track multipleOrderingdescriptions by @rjzamora in #22896 - Return null for non-participating regex capture groups in strings::extract by @galipremsagar in #23123
- wheels: build CUDA 13 wheels with latest CTK (13.3.0) by @jameslamb in #23174
- Support explicit row counts for zero-column tables by @madsbk in #22765
- Fix MultiIndex indexing/.loc to match pandas by @galipremsagar in #22966
- Match pandas merge/join dtype, index and error semantics by @galipremsagar in #23060
- Rapidsmpf backref API changes for Host and Pinned MR by @nirandaperera in #23128
- Rewrite mixed inner/left/full join with post-filtering by @PointKernel in #23012
- Fix DataFrame.stack level resolution, ordering, and dtype preservation by @galipremsagar in #23370
- Rework approach to cudf-streaming bloom filter sizing by @wence- in #23067
- Match pandas ordering, dtypes, and validation in unstack/_pivot by @galipremsagar in #23368
- JNI bridge for the retention filter support for deletion vectors by @jihoonson in #23423
🐛 Bug Fixes
- Add back Index.fillna by @mroeschke in #21002
- Account of pandas.NamedAgg subclass change in pandas 3 by @mroeschke in #21023
- Account for non-fixed
pandas.offsets.Dayindate_rangefor pandas 3 by @mroeschke in #21036 - Fix
columnsvalidation logic of DataFrame.from_records by @mroeschke in #21034 - Unify
_is_null_host_scalarintois_na_likeby @galipremsagar in #21079 - Fix datetime binops issues in
pandas-3.0by @galipremsagar in #21172 - Fix convert_dtypes with new StringDtype in pandas 3 by @mroeschke in #21200
- Preserve StringDtype variants from pandas inputs for pandas 3 by @mroeschke in #21208
- Re-enable
dtype=categoryin pandas-3.0 branch by @galipremsagar in #21604 - Fix all string type bugs by @galipremsagar in #21609
- Fix astype `Categori...
v26.06.01
What's Changed
🛠️ Improvements
- Temporarily WAR rapidsmpf<->libcudf conda package build cycle (#22520) by @jolorunyomi in #22772
Full Changelog: v26.06.00...v26.06.01
v26.06.00
What's Changed
🚨 Breaking Changes
- Undeprecate the byte-pair-encoding APIs by @davidwendt in #21760
- [Multi-GPU Polars] Introduce Ray mode for multi-GPU cudf-polars execution by @madsbk in #21746
- Get rid of relaxed constexpr across libcudf by @PointKernel in #21703
- [Multi-GPU Polars] Use current rmm resource in SPMD mode by @madsbk in #21842
- Remove obsolete statistics infrastructure by @rjzamora in #21857
- [Multi-GPU Polars] Create engines directly instead of factory functions by @madsbk in #21898
- Handle integers in floor division and power AST operators by @mhaseeb123 in #21831
- Enforce cudf_polars
cardinality_factorandschedulerdeprecations by @mroeschke in #21988 - [Multi-GPU Polars] Unify streaming engine options by @madsbk in #21930
- [Multi-GPU Polars] Split PDSH utils into legacy and new frontend paths by @madsbk in #21941
- Remove CUDAStreamPolicy enum and simplify CUDA stream policy by @vyasr in #22086
- [Multi-GPU Polars] Bind workers to topology-local hardware by @madsbk in #22113
- [FEA] Support Multi-Output JIT Transforms by @lamarrr in #21704
- Migrate RMM usage to CCCL MR design by @bdice in #22008
- Refactor cudf-polars plugin for Polars' test suite by @madsbk in #22301
- Remove legacy Dask-based streaming backends by @madsbk in #22358
- Make RapidsMPF the default runtime for cudf_polars streaming executor by @mroeschke in #22281
- Bump minimum Polars version to 1.35 by @mroeschke in #22459
- Introduce a process-wide singleton engine for
.collect(engine="gpu")by @madsbk in #22410 - Remove cudf-polars[rapidsmpf] pip extra & numpy as a [test] dependency; add [dask] pip extra by @mroeschke in #22480
- Untangle
target_partition_sizeandbroadcast_join_limitby @rjzamora in #22411 - Replace
--executorwith extended--frontendchoices in cudf-polars benchmarks by @madsbk in #22504 - Clean up legacy test scaffolding in cudf-polars by @madsbk in #22535
- [cudf_polars] Reorganize package layout by @madsbk in #22491
- Move
collectivesmodule by @rjzamora in #22578
🐛 Bug Fixes
- Fix TypeError when gathering on empty indices by @jberg5 in #21705
- CPU-only importable pdsh benchmark file by @TomAugspurger in #21791
- Change more Rapidsmpf Shuffler.wait_on to Shuffler.wait by @mroeschke in #21798
- Add missing headers to reader_impl_chunking_utils.cu by @bdice in #21784
- Fix TPC-DS query validation failures due to nulls_last mismatch by @Matt711 in #21814
- IWYU to fix latest CCCL compilation by @vyasr in #21839
- Fix additional dictionary tests to handle unordered keys by @davidwendt in #21773
- Add missing includes for cuda::std::abs by @PointKernel in #21845
- Fix segment calculation in TPC-DS Q54 by @Matt711 in #21829
- Workaround
sum(nulls)difference between DuckDB and Polars in TPC-DS Q64 by @Matt711 in #21826 - Fix ambiguous stream constructor by @bdice in #21881
- Ensure cudf.pandas proxy object tests populate test-local type maps by @mroeschke in #21879
- Dont allow rtxpro6000 runners to pick up CI jobs by @Matt711 in #21954
- Fix union actor deadlock when input branches share a fanout by @Matt711 in #21949
- Fix expression decomposition when mixing fusable and non-fusable reductions by @Matt711 in #21822
- Fix type mismatch in groupby-count with multiple partitions by @Matt711 in #21934
- Return null instead of nan for pl.Expr.mean with rapidsmpf by @mroeschke in #21805
- Fix stream-ordering bugs related to pool streams by @vuule in #21908
- Fix
data_alloc_sizequery bugs by @rjzamora in #21955 - Skip pinned memory tests on unsupported systems by @rjzamora in #21976
- Fix null_count incorrectly marked as pointwise by @vyasr in #21995
- Add sort_keys to benchmark validation for complex sort expressions by @Matt711 in #21817
- Avoid invalid pwise join when dynamic-planning is enabled by @rjzamora in #21977
- Validate PDS-DS Queries Q24, 47, 49, 94 by @Matt711 in #22007
- Fix validation failures in TPC-DS Q70 and Q79 by @Matt711 in #21820
- Fix OOM in PDS-DS Q78 by @Matt711 in #22009
- Workaround unsupported unary function in a groupby context in PDS-DS Q94 by @Matt711 in #22013
- Fix unreachable else branch in gather bitmask logic by @eternallyproud in #21946
- Fix cuda error when sorting empty pl.concat result by @jberg5 in #21825
- Cast groupby sum of integers result to schema in cudf_polars by @mroeschke in #21990
- Fix RTX PRO 6000 Blackwell CI by @bdice in #21999
- Exclude
value_countsas a pointwise UnaryFunction in cudf_polars by @mroeschke in #22001 - Fix ast return_type_functor to handle decimal types with non-zero scale by @davidwendt in #21996
- Fix remote IO in cudf-polars pdsh benchmark by @ncclementi in #22090
- Fix deprecation warnings for set_as_build_table by @davidwendt in #22087
- Fix libcudf gather segfault in set_all_valid_null_masks by @davidwendt in #22092
- Fix stable ID for
DataFrameScanby @rjzamora in #22091 - Fix PDS-H decimal validation failures by @Matt711 in #22107
- Optimize PDS-DS Q74 by @Matt711 in #22109
- Pass BufferResource for stream lifetime in rapidsmpf integration layer by @vyasr in #22110
- Pass required
brargument toTableChunk.from_pylibcudf_tableby @pentschev in #22116 - Fix missing rapidsmpf hiding real
ImportErrorin benchmark scripts by @pentschev in #22114 - Fix partitioning metadata preservation for
GroupByby @rjzamora in #22111 - Expand CSE placeholders during HStack lowering by @rjzamora in #21796
- Fix lists::segmented_gather to return empty for empty input by @davidwendt in #22115
- Ensure insert_finished() is called on error paths for streaming collectives by @Matt711 in #22142
- Skip flaky upstream polars deadlock test by @Matt711 in #22182
- Fix CSE HStack lowering to respect with_columns semantics by @Matt711 in #22184
- CUDA 13.2 support: prefer
__syncthreads()toblock.sync()for shared memory fencing, fix compiler errors in C++ tests by @jameslamb in #22152 - Prevent memory corruption in ORC reader by @vuule in #22186
- Pin to
pyarrow<24in type checking environment by @TomAugspurger in #22230 - Pin PyArrow to <24 by @KyleFromNVIDIA in #22236
- Increase tolerance in
test_groupby_categorical_keyby @pentschev in #22249 - Set memory limit for DaskEngine by @TomAugspurger in #22242
- Revert Date casts in pdsh benchmarks by @TomAugspurger in #22232
- Fix flaky tracing test in cudf-polars by @TomAugspurger in #22012
- Pin polars version in type-checking environment by @TomAugspurger in #22256
- Fix nvbench handling of memory-resource objects by @davidwendt in #22257
- Temporarily increase max days without success to 40 days by @pentschev in #22264
- fix(cmake): exclude zstd, roaring, and cuco from install by @vyasr in #22263
- Rescale timestamp stats to the target precision in parquet pred...
v26.04.00
What's Changed
🚨 Breaking Changes
- Make offset vectors consistent across partitioning APIs by @PointKernel in #20937
- Remove unneeded parameters from make_dictionary_column by @davidwendt in #21032
- Deprecate nvtext::byte_pair_encoding APIs by @davidwendt in #21157
- Require pyarrow 19 or greater by @vyasr in #21183
- Accept device spans instead of buffers in hybrid scan APIs. by @mhaseeb123 in #21026
- Deprecate nvtext::edit_distance_matrix API by @davidwendt in #21159
- Enable parquet readers to select top-level cols by index by @mhaseeb123 in #21113
- Hybrid scan APIs to accept an
mrto allocate output tables by @mhaseeb123 in #21263 - Add pylibcudf interface to cudf::round_decimal by @davidwendt in #21332
- Use the new
make_table_chunks_available_or_waitAPI from RapidsMPF by @madsbk in #21291 - [BUGFIX] Make cudf's context mt-safe on initialization by @lamarrr in #21008
- Enforce thread safety in sort-merge join APIs by @shrshi in #21314
- Change dictionary columns to support unordered keys by @davidwendt in #21058
- Add cudf::column_nans_to_nulls API by @davidwendt in #21331
- Relocate
distinct_countandunique_countfromstream_compactiontoreductionby @PointKernel in #21372 - Change missing value repr for string from to None by @mroeschke in #21425
- Make device_span an alias of cuda::std::span by @PointKernel in #21283
- Preserve pandas nullable types in
dtype=arguments by @mroeschke in #21499 - [BUGFIX] Fix handling of scalar inputs in transform and row_ir by @lamarrr in #21443
- Preserve pandas nullable types from pandas objects by @mroeschke in #21514
- Remove unneeded stream/mr parameters from make_lists_column by @davidwendt in #21548
- Bump minimum NumPy dependency to 1.26 by @mroeschke in #21607
- Prune uneeded dependencies from pyproject.toml's and recipe.yml's by @mroeschke in #21608
- Adapt to rapidsmpf changes splitting communicator and streaming context by @wence- in #21632
- RapidsMPF SPMD mode by @madsbk in #21619
- Improve approx_distinct_count to work with preallocated sketch by @PointKernel in #21396
- [BUG] [cudf-polars] Remove rapidsmpf concat insert option by @nirandaperera in #21761
- Bump librdkafka to >=2.11.1,<2.12.0 by @mroeschke in #21951
🐛 Bug Fixes
- Add missing synchronisation in decode_delta_byte_array_kernel by @wence- in #21051
- Fixes index-based filtering of left join indices by @shrshi in #20990
- Fix issues in CSV reader benchmarks by @vuule in #21025
- Fix .first/last cudf_polars expr with empty columns by @mroeschke in #21089
- Switch date type in pandas PDSH queries by @Matt711 in #21101
- Preserve partitioning information in
Cachenodes by @rjzamora in #21098 - Use Dask "context" to populate rapidsmpf context for proper statistics by @quasiben in #21126
- Change output dtype to
int32for datetime component methods by @Matt711 in #21099 - Update column names in pdsh query 18 by @TomAugspurger in #21119
- Preserve NA values in decimal ArrowExtensionArray comparisons by @Matt711 in #21168
- Handle empty format string in dt.strftime for GPU engine in cudf_polars by @mroeschke in #21143
- Handle Greek final sigma in
str.lower()by @Matt711 in #21154 - Preserve type metadata in unary ops by @Matt711 in #21170
- Fix the host-device access to device_span data in cumulative_centroid_weight_grouped by @vuule in #21163
- Make JNI partition output consistent with cuDF by @zpuller in #21029
- Ensure empty windows return NaN for rolling aggregations by @Matt711 in #20677
- Fix
at/iatindexers to reject list-like keys by @Matt711 in #21213 - Vendor Pandas' to_xarray in cudf.pandas by @Matt711 in #21175
- Raise error for string slicing on non-monotonic DatetimeIndex by @Matt711 in #21218
- Add
__array_priority__to proxy scalar types to match pandas by @Matt711 in #21235 - Change find_first_set_bit_kernel to use BlockReduce instead of cg::reduce by @davidwendt in #21234
- Add noinline declaration to secondary type-dispatching row-operators in Debug build by @davidwendt in #21197
- Fix casting to StringDtype for ArrowExtensionArray duration and decimal types by @Matt711 in #21230
- Fix
pl.Expr.concat_strwith boolean columns in cudf_polars by @mroeschke in #21145 - Only serialize column slice by @pentschev in #21301
- Fix return type of str.ip2int to uint32 by @mroeschke in #21324
- Fix integer overflow in
cudf::hash_partitionby @wence- in #21298 - Remove pandas compatibility gating for dtypes in
datetimeandtimedeltacolumns by @galipremsagar in #21252 - Fix how cudf-polars tracing finds dataframe inputs by @TomAugspurger in #20647
- Use ColumnBase.create in from_arrow, follow-ups in pyarrow 19 decimal support by @mroeschke in #21317
- Fix validation for datetimes coming from arrow by @vyasr in #21369
- Fix n_workers detection in tpc-h benchmark by @TomAugspurger in #21368
- Fix list literal translation by @Matt711 in #20801
- Fix exponentially weighted mean with leading NULLs by @Matt711 in #20556
- Fix various issues in Python microbenchmarks by @vyasr in #21340
- Allow np.dtype(str) to coerce to object type for cudf column construction by @mroeschke in #21403
- Remove 4-byte padding requirement from the Brotli decompressor by @vuule in #21392
- Replace
thrust::getwithcuda::std::getby @mhaseeb123 in #21416 - Tests all APIs docstrings in doctests by @galipremsagar in #21404
- [BUG] Fixed a bug in the 10min notebook by @drivanov in #21400
- Fix empty string generation in get_json_object by @vyasr in #21418
- Save duckdb pdsh results to output file by @Matt711 in #21391
- Pin cupy<14 for wheel-tests-cudf and cudf-pandas unit tests by @Matt711 in #21469
- Fix generic_scalar_device_view::value() to honor decimal scale by @davidwendt in #21447
- Add notes to failing polars test by @vyasr in #21488
- Support CuPy 14 by @Matt711 in #21504
- Fix misaligned memory access in groupby by @PointKernel in #21513
- Deterministic build and probe table generation for join benchmarks by @shrshi in #21410
- Fix pds-h benchmark with
--suffixby @TomAugspurger in #21520 - Fix OOB read in chunked Parquet reads with
skip_rows/num_rowsby @vuule in #21407 - rapidsmpf compatibility in unspill_partitions by @TomAugspurger in #21539
- Handle edge case dectection in pds-h validation by @TomAugspurger in #21544
- Fix scan/ewm logic to pass stream to column_device_view::create by @davidwendt in #21557
- Account for the rank index in streaming
Sinkby @rjzamora in #21555 - Fix decimal precision loss in cast: float->decimal by @Matt711 in #21450
- Fix JIT filtering of join indices to properly handle nulls in nullable columns by @shrshi in #21570
- Fix span index-out-of-range error/assert in parquet::decode_page_data_generic kernel by @davidwendt in #2157...
v26.02.01
What's Changed
🐛 Bug Fixes
- Backport #21301: Only serialize column slice by @pentschev in #21328
Full Changelog: v26.02.00...v26.02.01
v26.02.00
What's Changed
🚨 Breaking Changes
- Avoid counting nulls and creating null mask in groupby aggregation
MERGE_M2by @ttnghia in #20716 - Remove cudf::get_current_device_resource by @bdice in #20688
- Avoid creating null mask in groupby aggregation
M2by @ttnghia in #20726 - Remove deprecated left semi- and anti- join APIs by @shrshi in #20668
- Inline and simplify some column methods by @vyasr in #20819
- Enable copy-on-write in cudf.pandas by @vyasr in #20401
- [FEA] Improve Null-Aware Operator Support in AST-Codegen by @lamarrr in #20206
- Remove legacy hash-combine logic and unify hashing with row hasher by @PointKernel in #20796
- Remove deprecated .from_pandas constructors by @mroeschke in #20925
- Remove deprecated Series.data by @mroeschke in #20914
- Remove all base attributes from ColumnBase by @vyasr in #20961
- Fix handling of unquoted strings in the CSV reader by @vuule in #20996
🐛 Bug Fixes
- Avoid duplicate streaming nodes for the rapidsmpf runtime by @rjzamora in #20586
- Handle scalar arguments in ternary expression by @Matt711 in #20600
- fix(noarch): use noarch build script in noarch build by @gforsyth in #20654
- fix(conda): matrix out noarch builds by cuda-major version by @gforsyth in #20678
- Include RMM in type checking environment and update type annotations for optional
streamby @TomAugspurger in #20636 - Add no-op path for
ArrowExtensionArray.astypeby @Matt711 in #20580 - Skip pytorch integration tests if CUDA is not available by @Matt711 in #20729
- Always delay CUDA Array Interface pointer access by @vyasr in #20719
- Fix various copy-on-write bugs by @vyasr in #20744
- Fix leaks in cuDF java tests by @abellina in #20767
- Fix plc.Scalar.from_py(datetime.datetime) incorrectly localizing naive datetimes by @mroeschke in #20769
- Don't remove double casts in cudf_polars by @mroeschke in #20773
- Fixes struct column handling in sort-merge joins by @shrshi in #20664
- Fix for
synccheckcompute-sanitizer errors across Parquet gtest by @mhaseeb123 in #20775 - Pin
numpy<2.4.0a0in mypy pre-commit environment by @TomAugspurger in #20781 - Raise when trying to run queries on different devices in same process by @wence- in #20617
- Ensure
min_periods=0is passed through rolling aggregations by @Matt711 in #20653 - Fix racecheck errors in the ORC reader by @vuule in #20792
- Fix the crash of multi-threaded parquet reader benchmark by @kingcrimsontianyu in #20783
- Fix racecheck reported by DATA_CHUNK_SOURCE_TEST in inflate_kernel by @davidwendt in #20804
- Fix racecheck in the gpu_debrotli_kernel by @davidwendt in #20806
- Ensure literal groupby aggregations are broadcasted to key length in cudf_polars by @mroeschke in #20776
- Pin
aiobotocore<3to fix CI failures by @TomAugspurger in #20844 - Fix racecheck in parquet decode_page_data_generic kernel by @davidwendt in #20850
- Avoid generating empty
TableChunksin streaming scan nodes by @rjzamora in #20815 - Fix dask imports in
CudfFusedParquetIOHostby @rjzamora in #20845 - Fix UB due to OOM Exception in ParquetReaderTest.ManyLargeLists by @lamarrr in #20841
- Fix racecheck/synccheck in JSON parse_fn_string_parallel kernel by @davidwendt in #20856
- Fix racecheck in ORC decode_column_data_kernel by @davidwendt in #20853
- Disable flatbuffers tests in CMake configuration by @bdice in #20848
- Upper bound on aiosqlite in polars-upstream job by @TomAugspurger in #20866
- Fix boolean casting consistency with Pandas (#20746) by @aryansri05 in #20747
- Add retries to requests made to PyPI's JSON API by @TomAugspurger in #20865
- Fix
size_typeoverflow in multiple APIs by @vuule in #20857 - Fix racecheck in parquet compute_string_page_bounds_kernel by @davidwendt in #20868
- Fix dictionary::encode to honor indices-type parameter by @davidwendt in #20842
- Add missing headers to row_ir.hpp, row_ir.cpp by @bdice in #20834
- Fix
parquet_optionsin pdsh benchmark by @TomAugspurger in #20893 - Add stream synchronize to tdigest generate_group_cluster_info by @davidwendt in #20846
- Only install RMM in mypy env on linux by @TomAugspurger in #20878
- Make nvcomp export unconditional by @vyasr in #20828
- Ensure we have nvjitlink from the CUDA version used at build time or newer and upgrade numba-cuda lower bound by @bdice in #20873
- Fix size_type overflow in the ORC writer by @vuule in #20889
- Constrain pyparsing version by @vyasr in #20935
- Revert #20902 by @vyasr in #20955
- Add force-blocking-launches to run_compute_sanitizer_test script by @davidwendt in #20962
- Fix racecheck error in parquet delta_byte_array_decoder::string_scan by @davidwendt in #20967
- Fix racechecks reported in parquet gpuEncodePages kernel by @davidwendt in #20975
- Don't encode s3 paths for kvikio_remote_io in read_json by @mroeschke in #20976
- Allow sort merge join to go above int32 output row limits by @revans2 in #20960
- Correct stream ordered deallocation in
Joinby @TomAugspurger in #20981 - Reintroduce
Buffer.nbytesproperty by @pentschev in #21027 - Fix SHA hash OOB on strings that are exact multiples of message chunk size by @rishic3 in #21004
- Temporarily disable IWYU for nightly tests by @davidwendt in #21045
- Fix cudf-polars multi-partition distributed sort by @TomAugspurger in #21047
- Backport #21051 by @wence- in #21086
- Pin pandas for
pylibcudftesting by @galipremsagar in #21124 - Hide pinned pool instantiation to avoid symbol conflicts with nvcomp by @vyasr in #21161
- Specialize field type checking for bool in Parquet thrift list decoder by @mhaseeb123 in #21144
- Fix reading of CSV files with double quotes in unquoted strings by @vuule in #21151
- Revert the multithreaded optimization in the CSV reader by @vuule in #21198
- Pin sqlglot in third-party integration tests by @Matt711 in #21271
- Exclude sqlglot version 28.7 from CI by @Matt711 in #21293
📖 Documentation
- Add note to developer guide about null values being undefined by @bdice in #20645
- [DOC] Add cudf-polars to the example build command by @Matt711 in #20763
- Clarify internal API header placement guidelines for details headers by @PointKernel in #20985
- Clarify deprecation message for cudf::round by @nirandaperera in #20809
- Require nvcc 12.9 in contributing guide by @bdice in #21186
🚀 New Features
- Expose
cudf::compute_column_jitto python by @Matt711 in #20697 - Add configuration option for max-io-threads by @quasiben in #20606
- Return stats from
lower_ir_graphby @rjzamora in #20528 - Promote join_kind from detail namespace to public by @PointKernel in #20703
- Make DataFrameScan and DataFrameSourceInfo pickle-able by @rjzamora in #20732
- Add compute-sanitizer dispatch action by @bdice in #20542
- Add RapidsMPF Al...
v25.12.00
What's Changed
🚨 Breaking Changes
- Rewrite JNI functions to use
JNI_TRY/JNI_CATCHby @ttnghia in #19053 - Remove compatibility with nvCOMP versions before 5.0 by @vuule in #20140
- Remove DataFrame.apply_chunks, Groupby.apply_grouped by @mroeschke in #20194
- Change .str.starts/endswith with tuple argument to match any pattern instead of pairwise matching by @mroeschke in #20249
- [cudf-polars] CUDA stream by @madsbk in #20154
- Chunked read parquet, prepend index column, and apply deletion vector by @mhaseeb123 in #20201
- Zero-copy
hostdevice_vectoron integrated systems by @vuule in #20225 - Use int64_t for the num_rows slot in parquet_reader_options by @wence- in #20256
- Require CUDA 12.2+ by @jakirkham in #20416
- Remove compatibility for CCCL < 3.1 by @bdice in #20468
- Remove deprecated types and APIs by @vuule in #20422
- Support signed integers and decimals in
SUM_WITH_OVERFLOWgroupby by @PointKernel in #19598 - Change groupby-scan COUNT to 1-based results by @davidwendt in #20168
- Change strings::like() pattern parameter from string_scalar to string_view by @davidwendt in #20428
- No-op performance tracking wrappers by @galipremsagar in #20595
🐛 Bug Fixes
- Copy
attrsat correct place inDataFrameconstructor by @galipremsagar in #20074 - Handle missing nightly runs in pandas tests job by @galipremsagar in #20081
- Fix numpy ufunc for
DataFrameby @galipremsagar in #20070 - Unproxy few unnecessary testing utilities in pandas by @galipremsagar in #20088
- Fix libcudf groupby benchmarks to not include internal cache by @davidwendt in #20038
- Fix cudf.date_range with non-iso start and end date strings by @mroeschke in #20116
- Fix create_distinct_rows_column to create non-nullable columns by @davidwendt in #20082
- Fix arrow timestamp frequency cases in
cudf.pandasby @galipremsagar in #20128 - Cast inputs to true division from decimal to float by @Matt711 in #20077
- Handle NVMLError_NotSupported in cudf-polars by @TomAugspurger in #20179
- Fix RMM JNI pinned_fallback_host_memory_resource for CCCL 3.1.0 by @bdice in #20160
- Require passing memory resources to from_libcudf methods by @vyasr in #20171
- Enable hash-groupby for decimal32/64 type and MEAN aggregation by @davidwendt in #20040
- Align decimal dtypes in predicate before conditional join by @Matt711 in #20060
- Change stream_checking_resource_adaptor::do_deallocate to noexcept by @vyasr in #20218
- Deallocation should be noexcept by @bdice in #20219
- Fix a race condition in the decode of delta encoded Parquet columns by @vuule in #20216
- Fix the host-device tdigest offsets by using cuda::std::span by @PointKernel in #20220
- Add
streamandmrarguments toColumn.from_arrowtype stub by @TomAugspurger in #20244 - Pin
deltalakein cudf-polars-polars-tests CI job by @TomAugspurger in #20255 - Pin ibis-framework<11.0.0 by @Matt711 in #20267
- Add private attributes for
cudf.pandasproxy objects by @galipremsagar in #20276 - Add Proxy for
SparseAccessorby @galipremsagar in #20278 - We need this to pacify mypy by @wence- in #20285
- Purge non-empty nulls for the generated lists columns in data generation utility by @ttnghia in #20283
- Fix missing table compatibility check in two_table_comparator constructor by @PointKernel in #20305
- Fix the check for equal
num_colsacross empty parquet sources by @mhaseeb123 in #20320 - Add
nans_to_nullstoFrameby @galipremsagar in #20314 - Add support for list type in
getby @galipremsagar in #20332 - Fix decimal dtype serialization in cudf-polars by @Matt711 in #20300
- Make the
GroupedRollingWindowexpression node reconstructable in cudf-polars by @Matt711 in #20288 - Ensure pylibcudf.Scalar.from_py uses CUDA streams by @TomAugspurger in #20340
- Skip failing cudf-polars test due to hash groupby bug by @Matt711 in #20356
- Support order by keys for order-sensitive scalar aggregations in grouped windows by @Matt711 in #20350
- Honor user-passed stream in slice_strings for scalar inputs by @mroeschke in #20349
- Thread missing streams in column/table view creation to char size calculation by @vyasr in #20351
- Fix missed-sync for
mapping_indices_kernelin hash-based groupby aggregation by @ttnghia in #20370 - Fix a few SPDX-related issues by @KyleFromNVIDIA in #20364
- Fix a
dtypebug in column constructor by @galipremsagar in #20384 - Refactor
as_columndtype parameter calls by @galipremsagar in #20379 - Add CUDA stream to
cudf_polars.Column.deserializeby @TomAugspurger in #20396 - Add missing CUDA stream to cudf-polars left-semi join by @TomAugspurger in #20398
- Fix various string APIs to work with extension types by @galipremsagar in #20368
- Add parameter validation for
mergeandMultiIndex.from_frameby @galipremsagar in #20382 - Fix nvtext::normalize_characters special token case by @davidwendt in #20242
- Fix pinned memory resource
shared_pointerlifetime in tests. by @bdice in #20407 - Support new
nvcompStatus_tenum value by @vuule in #20376 - Don't skip blank CSV lines rows after the header in cudf-polars scan_csv by @mroeschke in #20341
- Fix OOB accesses in JSON_CornerCase_Empty test and get_row_array_parent_col_id function by @bdice in #20421
- Change calls to cudaMemcpyToSymbol to cudaMemcpyToSymbolAsync by @davidwendt in #20374
- Do not accelerate
pandas._config.configby @Matt711 in #20413 - Return timedelta instead of datetime type with std with datetime type with missing values by @mroeschke in #20439
- Disallow non-bool skipna arguments to reduction methods by @mroeschke in #20436
- Fix parquet scans for duckDB PDS-DS by @Matt711 in #20388
- Support
__array_function__on the proxy array type by @Matt711 in #20419 - Make
memory_usageand__sizeof__proxy attributes and always skip all memory usage tests by @Matt711 in #20425 - Add input validation for
from_recordsby @galipremsagar in #20412 - Use computed reduction result type for empty sum and product aggregations by @mroeschke in #20438
- Correct level arg validation for Index.isin, unique by @mroeschke in #20449
- Add private
_grouperattribute toDataFrameGroupByproxy type by @Matt711 in #20448 - Raise ValueError when indexing with zero step slice by @mroeschke in #20453
- Raise IndexError for float-like indexers in RangeIndex/MultiIndex.getitem by @mroeschke in #20454
- Disallow slice(bool, ...) in DataFrame.loc with MultiIndex by @mroeschke in #20457
- Fix core dump in MemoryCleaner by @res-life in #19872
- Disallow multiple ellipse values in loc/iloc indexing by @mroeschke in #20456
- Fix
scanoperations forstringcolumns by @galipremsagar in #20460 - Fix UTF8 data generator in libcudf benchmarks utility by @davidwendt in #20465
- Handle dealloc in stream-ordered cudf-polars ops by @TomAugspurger in #20467
- Raise on unsupported unsta...
v25.10.00
🚨 Breaking Changes
- Remove UCX-Py (#19979) @pentschev
- Revert "Migrate mixed join to use multiset #19660" (#19933) @PointKernel
- Fill missing values in
Series/Index.valuesfor numeric types with np.nan by default (#19923) @mroeschke - Remove deprecated
DataFrame.apply_rows, deprecateDataFrame.apply_chunksandGroupby.apply_grouped(#19896) @mroeschke - Move prefetching out of experimental and simplify the API (#19875) @vyasr
- Add join
*_match_contextAPIs to hash join (#19835) @PointKernel - Vendor libnvcomp in libcudf (#19743) @bdice
- Migrate mixed join to use multiset (#19660) @PointKernel
- Separate row mask and page mask computation and usage (#19537) @mhaseeb123
- [FEA] Implement null-aware transforms and filters (#19502) @lamarrr
- Support output-type for MEDIAN/QUANTILE aggregation in cudf::reduce (#19267) @davidwendt
🐛 Bug Fixes
- Fix edge cases in statistics collection (#20094) @rjzamora
- Fix multi-partition
Filterbug (#20075) @rjzamora - Fix
reindexto fill only the reindexed values withfill_value(#20063) @galipremsagar - Fix arrow arrays + numpy ufunc interaction (#20047) @galipremsagar
- Fix race conditions in ORC reader decimal decoding (#20044) @vuule
- Keep mr alive along with arrow tables and columns (#20028) @vyasr
- Fix
value_countsmissingnanbug (#20026) @galipremsagar - Compatibility for rapidsmpf's unspill_partitions (#20020) @TomAugspurger
- Fix type metadata preservation in
shift(#20017) @galipremsagar - Fix incorrect type propagation in dataframe assignment (#20010) @galipremsagar
- Fix OOB memory read in decode_page_data_generic kernel (#19995) @davidwendt
- Fix data_type creation in ast::operation::instantiate (#19994) @davidwendt
- Skip Narwhals pandas get_dtype_backend[pyarrow] tests after ArrowDtype proxy changes (#19992) @Matt711
- Make cudf.pandas callables usable with inspect.getfullargspec (#19988) @mroeschke
- Align decimal dtypes to schema after parquet IO scan (#19974) @Matt711
- Avoid undefined numpy protocols on cudf.pandas proxy objects (#19968) @mroeschke
- Skip failing polars iceberg test (#19955) @Matt711
- Revert "Migrate mixed join to use multiset #19660" (#19933) @PointKernel
- Define FrozenList proxy independently in cudf.pandas (#19931) @mroeschke
- Ignore scalars when broadcasting for horizontal string concatenation in cudf-polars (#19893) @Matt711
- Fix is_valid_rolling_aggregation for STD aggregation (#19888) @davidwendt
- Fix a decompression parameter in the chunked ORC reader (#19882) @vuule
- Skip flaky stats tests pending follow up (#19881) @brandon-b-miller
- Require list type for is_valid_aggregation and MERGE_LISTS/SETS (#19876) @davidwendt
- Temporary solution to ensure data-source/sink stream ordering (#19874) @kingcrimsontianyu
- Check for integer overflow in cudf::strings::find_multiple (#19867) @davidwendt
- Fix missing stream from cudf::top_k_order (#19866) @davidwendt
- Disallow loc.setitem with list-like indexer when list elements not in index (#19851) @mroeschke
- Fix .str.replace ignoring n for single character replacements (#19848) @mroeschke
- Fix strings::find_instance warp parallel logic (#19845) @davidwendt
- Add changed-files to the needs of every job that requires it (#19830) @Matt711
- xfail polars
decimal(precision=None)test (#19821) @Matt711 - Fix empty column returned by cudf::from_arrow_stream_column (#19812) @davidwendt
- Filter pandas warning in dask_cudf test (#19808) @TomAugspurger
- Update identify_stream_usage CUDA runtime hooks to CUDA 13 (#19807) @robertmaynard
- When bundling
libnvcomp.so.Xonly append the major version value (#19786) @robertmaynard - Improvements to
pylibcudf.from_iterable_of_py(#19781) @Matt711 - Avoid using multiple
Cachenodes with the same hash (#19769) @rjzamora - Fix window var() test failures from float rounding (#19761) @Matt711
- Use
is_compressedfield from Parquet V2 data page headers to determine if they are compressed (#19755) @mhaseeb123 - Fix bug in
evalfunction withnvtx-0.2.11(#19754) @galipremsagar - Fix ndsh benchmarks nvtx range usage (#19753) @davidwendt
- Support
nanin non-floating point column in cudf-polars (#19742) @Matt711 - Fix filter call in benchmark (#19732) @vyasr
- Suppress NVRTC warning from stdint.h (#19712) @davidwendt
- Correctly decode boolean lists in chunked parquet reader (#19707) @mhaseeb123
- Add new xfails for xarray release (#19705) @vyasr
- Fix "--executor" pytest parameter for cudf-polars (#19703) @rjzamora
- Match polars semantics for rolling-sum with all-null windows (non-empty) (#19680) @Matt711
- [BUG] Set
query_setarg when validating/running cudf-polars PDS-DS benchmarks (#19674) @Matt711 - Fix
group_by().agg()on non-aggregatable dtypes (#19669) @Matt711 - Fix broken links in 10min notebook (#19665) @Matt711
- Skip managed memory test if managed memory not supported in cudf-polars (#19653) @Matt711
- Fix integer overflow in warp-per-row grid calculation (#19638) @davidwendt
- Propagate exceptions thrown in async IO operations (#19628) @vuule
- Make
DataFrame.dtypesnot fallback to CPU always (#19627) @galipremsagar - Set scalar to valid in range_window_bounds unbounded/current_row (#19622) @davidwendt
- Enable data page mask computation for nullable
listandstructcolumns (#19617) @mhaseeb123 - Fix cudf::sequence() to throw exception for invalid scalar inputs (#19612) @davidwendt
- Fix uninitialized variable and misaligned write in parquet generic decoder (#19601) @mhaseeb123
- Compatibility with rapidsmpf 25.10.0 (#19591) @TomAugspurger
- Avoid querying device memory on systems without it in dask-cudf (#19577) @Matt711
- Avoid querying device memory on systems without it in cudf-polars benchmarks (#19575) @Matt711
- Increase alignment requirement for parquet bloom filter to 256 (#19573) @mhaseeb123
- Fix strftime with non-exact %a, %A, %b, %B (#19570) @mroeschke
- Fix OOB memcheck error in group_rank_to_percentage utility (#19567) @davidwendt
- Fix logic for number of unique values generated by data profile in benchmarks (#19540) @shrshi
- Fix contiguous-split nvbench cmake build (#19534) @davidwendt
- Fix value counts expression when the column has nulls (#19524) @Matt711
- Prefer
Column.astypeoverplc.unary.castin the fill null unary function expression (#19479) @Matt711 - Fix missing return in StringFunction.Strptime strict=True path (#19464) @Matt711
- Make dividing a boolean column return f64 dtype in cudf-polars (#19443) @Matt711
- branch-25.10-merge-branch-25.08 (#19429) @davidwendt
- Replace sprintf with std::format in libcudf parquet tests (#19364) @davidwendt
📖 Documentation
- Update missing docs (#19925) @vyasr
- Add examples of null handling to doxygen for cudf::rank (#19774) @davidwendt
- Fix cudf-polars dependency list docs (#19750) @pentschev
- Update cuDF classic testing documention regarding testing organization (#19745) @mroeschke
- Improve documentation around why we need no_gc_clear on pylibcudf Scalars (#19661) @vyasr
🚀 New Features
- Add memory resource parameters to interop, merge, and transpose (#20007) @vyasr
- Add mixed join benchmark with complex AST operators (#20004) @PointKernel
- Add memory resource arguments to join, round, and labeling (#20001) @vyasr
cudf-polarsstrptimeformat inference (#19997) @brandon-b-miller- Filter parquet row groups using byte offset bounds (#19991) @mhaseeb123
- Add memory resource arguments to concatenate (#19943) @vyasr
- Use column statistics to generate the physical plan in cuDF-Polars (#19940) @rjzamora
- Add all missing stream parameters (#19922) @vyasr
- Remote IO support in cudf-polars (#19921) @Matt711
- Add streams to io/timezone and io/text modules (#19913) @vyasr
- Add stream support to all nvtext modules (#19911) @vyasr
- Add streams to all top-level strings modules (#19910) @vyasr
- Update strings split APIs with stream parameters (#19909) @vyasr
- Support ordered grouped windows in cudf-polars (#19891) @Matt711
- Add local row-count and unique-count estimates to
explain(... logical=True)(#19864) @rjzamora - Add join
*_match_contextAPIs to hash join (#19835) @PointKernel - Support
rank(...).over(...)expressions in cudf-polars (#19803) @Matt711 - Add strings to/from encoded integer APIs (#19789) @davidwendt
- Add to_arrow method to pylibcudf core types (#19787) @Matt711
- Add streams to strings convert APIs (#19780) @vyasr
- Add an option to support reading ORC timestamp column as UTC time. (#19773) @res-life
- Support null_count in groupby/rolling context (#19739) @Matt711
- Collect join-key information in cudf-polars (#19736) @rjzamora
- Add count aggregation support to cudf::reduce (#19734) @davidwendt
- [FEA] Implement AST Expression - JIT codegen (#19733) @lamarrr
- Add streams to all scalar factories (#19729) @vyasr
- Add streams to reshape (#19728) @vyasr
- Add streams to null mask APIs (#19727) @vyasr
- Add streams to column APIs (#19726) @vyasr
- Construct next-gen parquet reader with pre-populated footer (#19724) @mhaseeb123
- Require
numba-cuda>=0.19.0,<0.20.0a0(#19711) @brandon-b-miller - Support
overexpression (window mapping) in cudf-polars (#19684) @Matt711 - Add streams support to all list APIs (#19683) @vyasr
- [FEA] Add Filter Benchmark (#19678) @lamarrr
- Add streams to pylibcudf join APIs (#19672) @vyasr
- Add streams to sorting APIs (#19671) @vyasr
- [FEA] Remove excessive copies of JITIFY's ProgramData during JIT kernel launch (#19667) @lamarrr
- Add streams to hashing APIs (#19663) @vyasr
- Use a more robust metric for sorting (de)compression tasks (#19656) @vuule
- Add streams support to datetime APIs (#19654) @vyasr
- Add streams to stream_compaction (#19651) @vyasr
- Enable casting
pl.Datetimeto integer types incudf-polars(#19647) @brandon-b-miller - Add Java JNI interface to get Gpu UUID (#19646) @res-life
- Add reduction with overflow detection (#19641) @PointKernel
- Upgrade to nvCOM...
[NIGHTLY] v25.12.00
🔗 Links
🚨 Breaking Changes
- Change .str.starts/endswith with tuple argument to match any pattern instead of pairwise matching (#20249) @mroeschke
- Remove DataFrame.apply_chunks, Groupby.apply_grouped (#20194) @mroeschke
- [cudf-polars] CUDA stream (#20154) @madsbk
- Remove compatibility with nvCOMP versions before 5.0 (#20140) @vuule
- Rewrite JNI functions to use
JNI_TRY/JNI_CATCH(#19053) @ttnghia
🐛 Bug Fixes
- We need this to pacify mypy (#20285) @wence-
- Purge non-empty nulls for the generated lists columns in data generation utility (#20283) @ttnghia
- Add Proxy for
SparseAccessor(#20278) @galipremsagar - Add private attributes for
cudf.pandasproxy objects (#20276) @galipremsagar - Pin ibis-framework<11.0.0 (#20267) @Matt711
- Pin
deltalakein cudf-polars-polars-tests CI job (#20255) @TomAugspurger - Add
streamandmrarguments toColumn.from_arrowtype stub (#20244) @TomAugspurger - Fix the host-device tdigest offsets by using cuda::std::span (#20220) @PointKernel
- Deallocation should be noexcept (#20219) @bdice
- Change stream_checking_resource_adaptor::do_deallocate to noexcept (#20218) @vyasr
- Fix a race condition in the decode of delta encoded Parquet columns (#20216) @vuule
- Handle NVMLError_NotSupported in cudf-polars (#20179) @TomAugspurger
- Require passing memory resources to from_libcudf methods (#20171) @vyasr
- Fix RMM JNI pinned_fallback_host_memory_resource for CCCL 3.1.0 (#20160) @bdice
- Fix arrow timestamp frequency cases in
cudf.pandas(#20128) @galipremsagar - Fix cudf.date_range with non-iso start and end date strings (#20116) @mroeschke
- Unproxy few unnecessary testing utilities in pandas (#20088) @galipremsagar
- Fix create_distinct_rows_column to create non-nullable columns (#20082) @davidwendt
- Handle missing nightly runs in pandas tests job (#20081) @galipremsagar
- Cast inputs to true division from decimal to float (#20077) @Matt711
- Copy
attrsat correct place inDataFrameconstructor (#20074) @galipremsagar - Fix numpy ufunc for
DataFrame(#20070) @galipremsagar - Align decimal dtypes in predicate before conditional join (#20060) @Matt711
- Enable hash-groupby for decimal32/64 type and MEAN aggregation (#20040) @davidwendt
- Fix libcudf groupby benchmarks to not include internal cache (#20038) @davidwendt
📖 Documentation
- Add profiling guide (#20292) @bdice
- Add note that --rmm-async only affects distributed scheduler. (#20129) @bdice
🚀 New Features
- Implement
ARGMINandARGMAXaggregations for reduction (#20207) @ttnghia - Add remaining memory resources (#20197) @vyasr
- Add memory resources to scalars (#20196) @vyasr
- Skip decompression of pruned parquet pages (#20192) @mhaseeb123
- Add memory resources to replace, json, and hashing (#20150) @vyasr
- Support decimal literals in cudf-polars (#20147) @Matt711
- Add pylibcudf is_valid_reduce_aggregation API (#20145) @davidwendt
- Add memory resources to I/O modules (#20136) @vyasr
- Add memory resources to reduce, column, column_factories, and contiguous_split (#20135) @vyasr
- Passthrough unary ops through Parquet predicate pushdown (#20127) @mhaseeb123
- Add memory resource to all strings modules (#20123) @vyasr
- Add memory resources to all nvtext APIs (#20119) @vyasr
- Add an example to inspect parquet files and dump row group and page level metadata information (#20117) @mhaseeb123
- Allow multiple calls to
cudf::initializeandcudf::deinitialize(#20111) @vuule - Remove rounding from cudf java (#20110) @pmattione-nvidia
- Add memory resources to groupby, datetime, and lists modules (#20102) @vyasr
- Add memory resources to search, reshape, and partitioning module (#20101) @vyasr
- Add memory resources to rolling, sorting, and quantiles modules (#20099) @vyasr
- Add memory resources to binaryop, copying, and stream_compaction (#20059) @vyasr
- Add memory resources to unary, transform, and filling modules (#20054) @vyasr
- Support
cum_sum(...).over(...)expressions in cudf-polars (#19908) @Matt711 - Support forward/backward filling null values in a grouped window context (#19907) @Matt711
- [FEA] Implement JIT Filter for read_parquet (#19831) @lamarrr
- Add an example to demonstrate the use of next-gen parquet reader to read a parquet file with highly selective filters (#19469) @mhaseeb123
- Rewrite JNI functions to use
JNI_TRY/JNI_CATCH(#19053) @ttnghia - Add support for maintain_order param in joins (#17698) @Matt711
🛠️ Improvements
- Add more Python type annotations to
cudf/core(#20287) @mroeschke - Skip mypy in pre-commit.ci (#20286) @bdice
- Remove extraneous host_memory_resource include (#20284) @bdice
- Add numpy to the mypy pre-commit environment (#20282) @vyasr
- Add
MultiIndex.dtypes(#20279) @galipremsagar - Add more type annotations to cudf/core/column subclasses (#20277) @mroeschke
- Handle unordered grouped windows properly for null filling and cum sums (#20275) @Matt711
- Unpin DuckDB and Ibis in cudf.pandas thirdparty tests (#20269) @mroeschke
- Enable
sccache-distconnection pool (#20264) @trxcllnt - Add ability to set the source_info of parquet_reader_options (#20253) @wence-
- Update
ConfigOptionsfor rapidsmpf-streaming integration (#20252) @rjzamora - Add arm testing of cudf.pandas unit tests (#20251) @vyasr
- Add pylibcudf to pre-commit linting and fix outstanding errors (#20250) @vyasr
- Change .str.starts/endswith with tuple argument to match any pattern instead of pairwise matching (#20249) @mroeschke
- Move and rename
ScanPartitionPlan(#20248) @rjzamora - Standardize setting StructDtype field names post libcudf conversion (#20235) @mroeschke
- Prevent accidental copies of expensive-to-copy object types (#20226) @vuule
- More mypy and docs fixes (#20224) @vyasr
- Configuration for which metrics are enabled during tracing (#20223) @TomAugspurger
- Fix parquet row number check for page bounds (#20217) @pmattione-nvidia
- Rename
comparison_binop_generatortoarg_minmax_binop_generatorand corresponding file tonested_types_extrema_utils.cuh(#20212) @Copilot - Fix various typing errors (#20205) @vyasr
- Stop using libcudf default parameters in pylibcudf (#20204) @vyasr
- Pin pydantic<2.12 in ci/test_cudf_polars_polars_tests.sh (#20200) @mroeschke
- Support binops between float scalar to decimal column (#20199) @mroeschke
- Add an overhead field to cudf-polars tracing (#20198) @TomAugspurger
- Remove DataFrame.apply_chunks, Groupby.apply_grouped (#20194) @mroeschke
- [pre-commit.ci] pre-commit autoupdate (#20189) @pre-commit-ci[bot]
- Revert "Temporarily disable conda-java-tests" (#20184) @bdice
- Don't assume cudf_polars benchmarking scale factor is always an integer (#20182) @mroeschke
- Remove unnecessary work from
read_parquet_metadata(#20180) @vuule - Reduce execution times for parquet dictionary tests (#20176) @mhaseeb123
- Skip filtering Parquet row groups with dictionaries if there are non-dict encoded pages (#20175) @mhaseeb123
- Improve performance of groupby tdigests gtests (#20173) @davidwendt
- Update to rapids-logger 0.2 (#20172) @bdice
- Split row operator header (#20166) @PointKernel
- Add PDSH benchmark runner for cudf.pandas (#20164) @mroeschke
- Temporarily disable conda-java-tests (#20162) @bdice
- Manual forward merger for Branch 25.12 - branch 25.10 (#20157) @galipremsagar
- [cudf-polars] CUDA stream (#20154) @madsbk
- Avoid NumericalColumn call from CategoricalColumn.children (#20153) @mroeschke
- Branch 25.12 merge branch 25.10 (#20152) @vyasr
- Make ListColumn._transform_leaves convert via pylibcudf (#20151) @mroeschke
- Make ColumnBase.as_*_column convert via pylibcudf (#20149) @mroeschke
- Make ColumnBase.deserialize construct via pylibcudf (#20142) @mroeschke
- Remove unused ColumnBase.view (#20141) @mroeschke
- Remove compatibility with nvCOMP versions before 5.0 (#20140) @vuule
- Adjust rmm pool handling in PDSH benchmarks (#20138) @TomAugspurger
- Fix slowdown in cudf-polars distributed tests (#20137) @TomAugspurger
- Disable async MR priming in cudf.pandas (#20133) @bdice
- Fix type annotations in cudf-polars (#20131) @TomAugspurger
- Add tests for AUTO and HYBRID (de)compression modes (#20126) @vuule
- Run cudf-polars wheels unit tests with more than 1 process (#20124) @mroeschke
- Add pyarrow stubs to mypy environment and fix associated errors (#20118) @vyasr
- Avoid running pandas unit tests for private functionality with cudf.pandas (#20115) @mroeschke
- Remove MultiIndex.from_pandas pytest benchmark (#20112) @mroeschke
- Use 8 processes for pandas tests, show top 10 test times (#20109) @bdice
- Reduce verbosity of running the pandas test suite (#20107) @vyasr
- Switch host_vector and host_span dependency (#20106) @davidwendt
- Make Column.set_mask go through pylibcudf (#20103) @mroeschke
- Have ListColumn.from_sequence go through pylibcudf (#20098) @mroeschke
- Deprecate legacy public row operators (#20097) @PointKernel
- Fix
RAPIDS_BRANCHversion and update script (#20091) @galipremsagar - Reduce output buffer sizes for pruned pages of columns with a
listparent (#20086) @mhaseeb123 - Avoid direct CategoricalColumn calls in dask_cudf (#20080) @mroeschke
- Rework reduction case statement as dispatch_type_and_aggregation (#20078) @davidwendt
- Avoid shadowing module names (#20071) @vyasr
- Fix typing issues in pylibcudf (#20069) @vyasr
- Avoid more explicit calls to IntervalColumn and StructColumn (#20064) @mroeschke
- Cleanup of some libcudf aggregation code (#20053) @davidwendt
- Prune entries in Sphinx nitpick_ignore (#20045) @mroeschke
- Deprecate .from_pandas constructor (#19996) @mroeschke
- Improve performance of string column size computation during parquet reads. (#19986) @nvdbaranec
- Run cudf-polars conda unit tests with more than 1 process (#19980) @mroeschk...
v25.08.00
🚨 Breaking Changes
- Allow
np.dtype('object')for cases that are valid (#19478) @galipremsagar - [FEA] Remove CUDA JIT-Compatibility Checks & CCCL WARs (#19470) @lamarrr
- Drop cuda 11 usages (#19386) @galipremsagar
- Deprecate cudf::round for float types (#19298) @davidwendt
- Support output_dtype in cudf::reduce for nunique aggregation (#19265) @davidwendt
- Change default cudf-polars executor to "streaming" (#19263) @TomAugspurger
- Fix Handling of Complex Types in AST (#19248) @lamarrr
- Enable chunked reading of PQ sources with
>2Brows (#19245) @mhaseeb123 - Refactor
grid_1dclass (#19211) @lamarrr - Return valid for all-nulls in reduce() with nunique include-nulls aggregation (#19196) @davidwendt
- Refactor JNI error handling (#19149) @ttnghia
- Remove CUDA 11 from dependencies.yaml (#19139) @KyleFromNVIDIA
- Quick fixes of
modernize-use-constraintsrule (#19105) @vuule - Filter Parquet row groups using row bounds (#19082) @mhaseeb123
- Temporarily revert "Refactor JNI error handling (#18983)" (#19076) @abellina
- Rename
parquet_chunked_writertochunked_parquet_writerfor consistency with the reader (#19047) @mhaseeb123 - Compile libcudf using C++20 Standard (#19045) @vuule
- Refactor JNI error handling (#18983) @ttnghia
- stop uploading packages to downloads.rapids.ai (#18973) @jameslamb
- Remove deprecated Series methods, isclose (#18947) @mroeschke
- Remove deprecated groupby.collect (#18946) @mroeschke
- Remove deprecated get_dummies(cats=, ...) (#18944) @mroeschke
- Add pylibcudf.Column.from_arrow factory method (#18937) @Matt711
- Add pylibcudf.Table.from_arrow factory method (#18936) @Matt711
- Remove deprecated APIs (#18933) @vuule
- Remove cudf.Scalar (#18927) @mroeschke
- Remove deprecated
cudf::io::host_buffer(#18881) @Matt711 - Null-handling for Transforms (#18845) @lamarrr
- Enable
skip_rowsin the chunked parquet reader. (#18130) @mhaseeb123
🐛 Bug Fixes
- Increase alignment requirement for parquet bloom filter to 256 (#19595) @mhaseeb123
- Revert "Add primitive row dispatch support for semi/anti join and cudf::contains" (#19503) @PointKernel
- Allow
np.dtype('object')for cases that are valid (#19478) @galipremsagar - Add conda dependency on nvidia-ml-py. (#19454) @bdice
- Mark
cudf.pandasnotebook repr test as flaky (#19441) @Matt711 - Fix pytest to properly expose a bug (#19433) @galipremsagar
- Switch from
thrust::sorttocub::DeviceRadixSortin Parquet chunked reader (#19414) @ttnghia - Use numba-cuda>=0.15.2,<0.16 (#19413) @bdice
- Update String Transform Examples (#19407) @lamarrr
- [BUG] Make floor division and modulo by 0 match CPU polars (#19406) @Matt711
- Handle empty input in cudf::strings::extract APIs (#19398) @davidwendt
- Fix jitify error on exit from FILTER_TEST (#19395) @davidwendt
- Update cudf.pandas tests to silence deprecation warnings (#19377) @Matt711
- Replace sprintf with snprintf in libcudf parquet tests (#19371) @davidwendt
- Make DateOffset respect timezone (#19366) @Matt711
- Fix flaky tests in
cudf.pandas(#19345) @TomAugspurger - Update protocol choices for ucxx in PDSH benchmark (#19343) @TomAugspurger
- Remove passing pandas tests from xfail list (#19341) @Matt711
- Fix Union-Slice bug (#19336) @Matt711
- Fix bit shift overflow in segmented_offset_bitmask_binop utility (#19329) @davidwendt
- Fix job filters for
pandas-tests(#19322) @galipremsagar - Fix compile warning in interop_stringview.cpp (#19320) @davidwendt
- Fix a use-after-free issue in TDigest aggregation code. (#19311) @nvdbaranec
- Always represent datetime aware data as UTC in strftime (#19304) @mroeschke
- Do not pass cupy objects objects to numba kernels directly (#19283) @brandon-b-miller
- Correct docstring for
DataFrame.applyto match code (#19262) @dagardner-nv - Cast
n_uniqueaggregation result to match polars (#19256) @Matt711 - Fix Handling of Complex Types in AST (#19248) @lamarrr
- Add missing include (#19239) @vyasr
- Raised
MixedTypeErrorsfor condition that lead to mixed types (#19232) @galipremsagar - Fix errors in the nvCOMP adapter (#19221) @vuule
- Remove nvToolsExt usage (#19209) @vyasr
- Fix a pair of bugs in get_decompression_scratch() size. (#19207) @nvdbaranec
- Allow
is_list_liketo return correct values by disabling it (#19188) @galipremsagar - Fix slicing after
JoinandGroupByin streaming cudf-polars (#19187) @rjzamora - Fix
binopstype preservation for some dtypes (#19183) @galipremsagar - Fix streaming
GroupByon non-trivial keys (#19181) @rjzamora - Fix bitmask in from_arrow_host for sliced stringview type (#19174) @davidwendt
- Fixed group_by mean with missing values and multiple partitions (#19165) @TomAugspurger
- Add fallback to
HStacklowering in cudf-polars (#19163) @rjzamora - Fix
Literalpartitioning in cudf-polars (#19160) @rjzamora - Fix
from_array_interfacefor empty arrays (#19144) @Matt711 - Adding GH_TOKEN pass-through to summarize job (#19143) @msarahan
- Fix hash collision in Union([MapFunction]) (#19124) @TomAugspurger
- Fix bug in
group_by().n_unique()in streaming cudf-polars (#19108) @rjzamora - Parse (non-MultiIndex) label-based keys to structured data (#19103) @mroeschke
- Fix cudf_polars spilling (#19101) @TomAugspurger
- Fix libcudf strings case logic to set null-row size to zero (#19095) @davidwendt
- Temporarily revert "Refactor JNI error handling (#18983)" (#19076) @abellina
- Temporary workaround for incorrect
SplitScanresults in cuDF-Polars (#19071) @rjzamora - Use default memory resource for JSON_QUOTE_NORMALIZATION gtests (#19057) @davidwendt
- Added null-probability to polynomial benchmarks and fixed transform call-sites (#18972) @lamarrr
- Fix flaky custreamz test (#18961) @TomAugspurger
- Fix tdigest percentile correctness for low row-counts (#18952) @mythrocks
- Enable
skip_rowsin the chunked parquet reader. (#18130) @mhaseeb123
📖 Documentation
- Update conda environment file for CUDA 12.9 compatibility (#19376) @a-hirota
- Update recommended gcc version in contibuting guide (#19365) @davidwendt
- Autodoc DateOffset (#19297) @wence-
- Fix cudf::column_device_view::element() doxygen (#19296) @davidwendt
- Document aggregations for cudf::reduce in doxygen (#19264) @davidwendt
- add docs on CI workflow inputs (#19234) @jameslamb
- Update README and CONTRIBUTING to reflect new CUDA requirements (#19138) @PointKernel
- Remove the extra index URL for CUDA 12 (#19128) @vyasr
- Improve WordPieceVocabulary.tokenize documentation (#19098) @davidwendt
- Add some basic streaming engine documentation (#19088) @wence-
- Update the contributing guide to include pylibcudf in the build command (#19011) @Matt711
- Fix pylibcudf docs for some strings APIs (#19004) @davidwendt
- Update cuDF Python library design with BaseIndex and pylibcudf updates (#18903) @mroeschke
🚀 New Features
- Avoid using UVM on systems without a traditional memory resource (#19444) @Matt711
- Add parquet-sampling configuration options (#19423) @rjzamora
- Add new JSON reader interface accepting string column input to pylibcudf (#19400) @shrshi
- Add a parquet reader utility to update output null masks (#19370) @mhaseeb123
- Build and ship
shim.cufile as LTOIR (#19368) @brandon-b-miller - Add cudf::strings::find_instance API (#19326) @davidwendt
- Add single-file streaming
Sinksupport (#19317) @rjzamora - Support null_count expression (#19314) @Matt711
- Materialize tables in the experimental Parquet reader (#19308) @mhaseeb123
- Add new cudf::top_k API (#19303) @davidwendt
- Add cudf::strings::split_part API (#19289) @davidwendt
- Support output_dtype in cudf::reduce for nunique aggregation (#19265) @davidwendt
- Add
post_traversalAPI to cudf-polars (#19258) @rjzamora - Deprecate
DataFrame.apply_rows(#19218) @brandon-b-miller - Require
numba-cuda>=0.16.0(#19213) @brandon-b-miller - Add a mode to co-process decompression and compression on host and device (#19203) @vuule
- Return valid for all-nulls in reduce() with nunique include-nulls aggregation (#19196) @davidwendt
- Refactor JNI error handling (#19149) @ttnghia
- Add support for horizontal string concatenation
pl.concat_str(#19142) @Matt711 - Add PDS-DS Query 1 (#19131) @Matt711
- Support
cudf-polarsstr.reverse(#19117) @brandon-b-miller - Support
cudf-polarsstr.pad_endandstr.pad_start(#19116) @brandon-b-miller - Support
cudf-polarsstr.headandstr.tail(#19115) @brandon-b-miller - Support
cudf-polarsstr.to_titlecase(#19114) @brandon-b-miller - Add
cudf/io/codec.hppto expose compression/decompression APIs (#19113) @ttnghia - Support converting decimals to/from pylibcudf scalars (#19106) @Matt711
- Support resource-constrained sort-merge inner join operation through left table partitioning (#19102) @shrshi
- Filter Parquet row groups using row bounds (#19082) @mhaseeb123
- Implement UDF Filters (#19070) @lamarrr
- Move the remaining libcudf pieces to C++20 (#19065) @vuule
- Allow using a stream per thread at runtime (#19051) @vyasr
- Remove stacktrace retrieval code (#19048) @ttnghia
- Compile libcudf using C++20 Standard (#19045) @vuule
- String Transform Examples: Added Branching, Public API Versions, and Sampling (#19038) @lamarrr
- Refactor JNI error handling (#18983) @ttnghia
- Add basic
Sinksupport for streaming cudf-polars executor (#18963) @rjzamora - Fix debug-build Failure in JIT Tests (#18939) @lamarrr
- Add from_arrow factory methods for Scalar and DataType (#18938) @Matt711
- Add pylibcudf.Column.from_arrow factory method (#18937) @Matt711
- Add pylibcudf.Table.from_arrow factory method (#18936) @Matt711
- Update nvCOMP adapter (#18931) @vuule
- Create a pylibcudf Column from a iterable of python strings (#18916) @Matt711
- Add CLI argument to enable OOM protection in PDS-H (#18914) @pentschev
- Implement data page pruning using Parquet page index stats (#18873) @mhaseeb123
- Null-handlin...