Back to Datafusion

Apache DataFusion 51.0.0 Changelog

dev/changelog/51.0.0.md

53.1.071.5 KB
Original Source
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

Apache DataFusion 51.0.0 Changelog

This release consists of 537 commits from 129 contributors. See credits at the end of this changelog for more information.

See the upgrade guide for information on how to upgrade from previous versions.

Breaking changes:

  • Introduce TypeSignatureClass::Binary to allow accepting arbitrarily sized FixedSizeBinary arguments #17531 (Jefffrey)
  • feat: change datafusion-proto to use TaskContext rather thanSessionContext for physical plan serialization #17601 (milenkovicm)
  • chore: refactor usage of reassign_predicate_columns #17703 (rkrishn7)
  • fix: correct edge case where null haystack returns false instead of null #17818 (Jefffrey)
  • clean up duplicate information in FileOpener trait #17956 (adriangb)
  • refactor : deprecate ParquetSource::predicate() and merge into FileSource::filter() #17971 (getChan)
  • feat: convert_array_to_scalar_vec respects null elements #17891 (vegarsti)
  • make Union::try_new pub #18125 (leoyvens)
  • refactor: remove unused type_coercion/aggregate.rs functions #18091 (Jefffrey)
  • refactor: remove core crate from datafusion-proto #18123 (timsaucer)
  • Use TableSchema in FileScanConfig #18231 (adriangb)
  • Enable placeholders with extension types #17986 (paleolimbot)
  • Implement DESCRIBE SELECT to show schema rather than EXPLAIN plan #18238 (djanderson)
  • Push partition_statistics into DataSource #18233 (adriangb)
  • Let FileScanConfig own a list of ProjectionExprs #18253 (friendlymatthew)
  • Introduce expr_fields to AccumulatorArgs to hold input argument fields #18100 (Jefffrey)
  • Rename is_ordered_set_aggregate to supports_within_group_clause for UDAFs #18397 (Jefffrey)
  • Move generate_series projection logic into LazyMemoryStream #18373 (mkleen)

Performance related:

  • Improve Hash and Ord speed for dyn LogicalType #17437 (findepi)
  • Faster &&String::to_string #17583 (findepi)
  • perf: Simplify CASE for any WHEN TRUE #17602 (petern48)
  • perf: Improve the performance of WINDOW functions with many partitions #17528 (nuno-faria)
  • Avoid redundant Schema clones #17643 (findepi)
  • Prevent exponential planning time for Window functions - v2 #17684 (berkaysynnada)
  • Add case expr simplifiers for literal comparisons #17743 (jackkleeman)
  • Enable Projection Pushdown Optimization for Recursive CTEs #16696 (kosiew)
  • perf: Optimize CASE for any WHEN false #17835 (petern48)
  • feat: Simplify NOT(IN ..) to NOT IN and NOT (EXISTS ..) to NOT EXISTS #17848 (Tpt)
  • perf: Faster string_agg() aggregate function (1000x speed for no DISTINCT and ORDER case) #17837 (2010YOUY01)
  • optimizer: allow projection pushdown through aliased recursive CTE references #17875 (kosiew)
  • perf: Implement boolean group values #17726 (ashdnazg)
  • #17838 Rewrite regexp_like calls as ~ and *~ operator expressions when possible #17839 (pepijnve)
  • perf: add to aggregate_vectorized bench benchmark for PrimitiveGroupValueBuilder as well #17930 (rluvaton)
  • #17972 Restore case expr/expr optimisation while ensuring lazy evaluation #17973 (pepijnve)
  • chore: use NullBuffer::union for Spark concat #18087 (comphead)
  • Short circuit complex case evaluation modes as soon as possible #17898 (pepijnve)
  • perf: Fix NLJ slow join with condition array_has #18161 (2010YOUY01)
  • perf: improve ScalarValue::to_array_of_size for Boolean and some null values #18180 (rluvaton)
  • Allow filter pushdown through AggregateExec #18404 (LiaCastaneda)
  • Avoid scatter operation in ExpressionOrExpression case evaluation method #18444 (pepijnve)

Implemented enhancements:

  • feat: Implement DFSchema.print_schema_tree() method #17459 (comphead)
  • feat(spark): implement Spark length function #17475 (wForget)
  • feat: Add binary to join_fuzz testing #17497 (jonathanc-n)
  • feat: Support log for Decimal128 and Decimal256 #17023 (theirix)
  • feat(spark): implement Spark bitwise function shiftleft/shiftright/shiftrightunsighed #17013 (chenkovsky)
  • feat: Ensure explain format in config is valid #17549 (Weijun-H)
  • feat: Simplify CASE WHEN true THEN expr to expr #17450 (EeshanBembi)
  • feat: add sql feature to make sql planning optional #17332 (timsaucer)
  • feat: Add OR REPLACE to creating external tables #17580 (jonathanc-n)
  • feat(substrait): add support for RightAnti and RightSemi join types #17604 (bvolpato)
  • feat(small): Display NullEquality in join executor's EXPLAIN output #17664 (2010YOUY01)
  • feat(substrait): add time literal support #17655 (bvolpato)
  • feat(spark): implement Spark make_interval function #17424 (davidlghellin)
  • feat: expose udafs and udwfs methods on FunctionRegistry #17650 (milenkovicm)
  • feat: Support Seconds and Milliseconds literals in substrait #17707 (petern48)
  • feat: support for null, date, and timestamp types in approx_distinct #17618 (killme2008)
  • feat: support Utf8View for more args of regexp_replace #17195 (mbutrovich)
  • feat(spark): implement Spark map function map_from_arrays #17456 (SparkApplicationMaster)
  • feat: Display window function's alias name in output column #17788 (devampatel03)
  • feat(spark): implement Spark make_dt_interval function #17728 (davidlghellin)
  • feat: support multi-threaded writing of Parquet files with modular encryption #16738 (rok)
  • feat(spark): implement Spark map function map_from_entries #17779 (SparkApplicationMaster)
  • feat: Add Hash Join benchmarks #17636 (jonathanc-n)
  • feat: Support swap for RightMark Join #17651 (jonathanc-n)
  • feat: support spark udf format_string #17561 (chenkovsky)
  • feat(spark): implement Spark try_parse_url function #17485 (rafafrdz)
  • feat: Support reading CSV files with inconsistent column counts #17553 (EeshanBembi)
  • feat: Adds Instrumented Object Store Registry to datafusion-cli #17953 (BlakeOrth)
  • feat: add cargo-machete in CI #18030 (Weijun-H)
  • feat(spark): implement Spark elt function #17729 (davidlghellin)
  • feat: support Spark concat string function #18063 (comphead)
  • feat: support null_treatment, distinct, and filter for window functions in proto #18024 (dqkqd)
  • feat: Add percentile_cont aggregate function #17988 (adriangb)
  • feat: spark udf array shuffle #17674 (chenkovsky)
  • feat: Support configurable EXPLAIN ANALYZE detail level #18098 (2010YOUY01)
  • feat: add fp16 support to Substrait #18086 (westonpace)
  • feat: ClassicJoin for PWMJ #17482 (jonathanc-n)
  • feat(docs): display compatible logo for dark mode #18197 (foskey51)
  • feat: Add deregister_object_store #17999 (jonathanc-n)
  • feat: Add existence join to NestedLoopJoin benchmarks #18005 (jonathanc-n)
  • feat(small): Set 'summary' level metrics for DataSourceExec with parquet source #18196 (2010YOUY01)
  • feat: be indifferent to padding when decoding base64 #18264 (colinmarc)
  • feat: Add output_bytes to baseline metrics #18268 (2010YOUY01)
  • feat: Introduce PruningMetrics and use it in parquet file pruning metric #18297 (2010YOUY01)
  • feat: Improve metrics for aggregate streams. #18325 (EmilyMatt)
  • feat: allow pushdown of dynamic filters having partition cols #18172 (feniljain)
  • feat: support temporary views in DataFrameTableProvider #18158 (r1b)
  • feat: Better parquet row-group/page pruning metrics display #18321 (2010YOUY01)
  • feat: Add Hash trait to StatsType enum #18382 (rluvaton)
  • feat: support get_field for map literal #18371 (chenkovsky)
  • feat(docs): enable navbar #18324 (foskey51)
  • feat: Add selectivity metrics to FilterExec #18406 (2010YOUY01)
  • feat: Add reduction_factor metric to AggregateExec for EXPLAIN ANALYZE #18455 (petern48)
  • feat: support named arguments for aggregate and window udfs #18389 (bubulalabu)
  • feat: Add selectivity metric to NestedLoopJoinExec for EXPLAIN ANALYZE #18481 (petern48)

Fixed bugs:

  • fix: lazy evaluation for coalesce #17357 (chenkovsky)
  • fix: Implement AggregateUDFImpl::reverse_expr for StringAgg #17165 (nuno-faria)
  • fix: Support aggregate expressions in QUALIFY #17313 (rkrishn7)
  • fix: synchronize partition bounds reporting in HashJoin #17452 (rkrishn7)
  • fix: correct typos in CONTRIBUTING.md #17507 (Weijun-H)
  • fix: Add AWS environment variable checks for S3 tests #17519 (Weijun-H)
  • fix: Ensure the CachedParquetFileReader respects the metadata prefetch hint #17302 (nuno-faria)
  • fix: prevent UnionExec panic with empty inputs #17449 (EeshanBembi)
  • fix: ignore non-existent columns when adding filter equivalence info in FileScanConfig #17546 (rkrishn7)
  • fix: Prevent duplicate expressions in DynamicPhysicalExpr #17551 (UBarney)
  • fix: SortExec TopK OOM #17622 (nuno-faria)
  • fix: Change OuterReferenceColumn to contain the entire outer field to prevent metadata loss #17524 (Kontinuation)
  • fix: Preserves field metadata when creating logical plan for VALUES expression #17525 (Kontinuation)
  • fix: Ignore governance doc from typos #17678 (rkrishn7)
  • fix: null padding for array_reverse on FixedSizeList #17673 (chenkovsky)
  • fix: correct statistics for NestedLoopJoinExec #17680 (duongcongtoai)
  • fix: Partial AggregateMode will generate duplicate field names which will fail DFSchema construct #17706 (zhuqi-lucas)
  • fix: Remove parquet encryption feature from root deps #17700 (Vyquos)
  • fix: Remove datafusion-macros's dependency on datafusion-expr #17688 (yutannihilation)
  • fix: Filter out nulls properly in approx_percentile_cont_with_weight #17780 (Jefffrey)
  • fix: ignore DataType::Null in possible types during csv type inference #17796 (dqkqd)
  • fix: ParquetSource - with_predicate() don't have to reset metrics #17858 (2010YOUY01)
  • fix: optimizer common_sub_expression_eliminate fails in a window function #17852 (dqkqd)
  • fix: fix failing test compilation on main #17955 (Jefffrey)
  • fix: update PrimitiveGroupValueBuilder to match NaN correctly in scalar equal_to #17979 (rluvaton)
  • fix: Add overflow checks to SparkDateAdd/Sub to avoid panics #18013 (andygrove)
  • fix: Ensure ListingTable partitions are pruned when filters are not used #17958 (peasee)
  • fix: Improve null handling in array_to_string function #18076 (Weijun-H)
  • fix: Re-bump latest datafusion-testing module so extended tests succeed #18110 (Jefffrey)
  • fix: window unparsing #17367 (chenkovsky)
  • fix: Add dictionary coercion support for numeric comparison operations #18099 (ahmed-mez)
  • fix(substrait): schema errors for Aggregates with no groupings #17909 (vbarua)
  • fix: array_distinct inner nullability causing type mismatch #18104 (dqkqd)
  • fix: improve document ui #18157 (getChan)
  • fix(docs): resolve extra outline on tables #18193 (foskey51)
  • fix: Use dynamic timezone in now() function for accurate timestamp #18017 (Weijun-H)
  • fix: UnnestExec preserves relevant equivalence properties of input #16985 (vegarsti)
  • fix: wrong simplification for >= >, <= < #18222 (chenkovsky)
  • fix: only fall back to listing prefixes on 404 errors #18263 (colinmarc)
  • fix: Support Dictionary[Int32, Binary] for bitmap count spark function #18273 (kazantsev-maksim)
  • fix: support float16 for abs() #18304 (Jefffrey)
  • fix: Add WITH ORDER display in information_schema.views #18282 (gene-bordegaray)
  • fix: correct date_trunc for times before the epoch #18356 (mhilton)
  • fix: Preserve percent-encoding in PartitionedFile paths during deserialization #18346 (lonless9)
  • fix: SortPreservingMerge sanity check rejects valid ORDER BY with CASE expression #18342 (watford-ep)
  • fix: DataFrame::select_columns and DataFrame::drop_columns for qualified duplicated field names #18236 (dqkqd)
  • fix(docs): remove navbar padding breaking ui on mobile #18402 (foskey51)
  • fix: null cast not valid in substrait round trip #18414 (gene-bordegaray)
  • fix: map benchmark failing #18469 (randyli)
  • fix: eliminate warning when building without sql feature #18480 (corasaurus-hex)
  • fix: spark array return type mismatch when inner data type is LargeList #18485 (jizezhang)
  • fix: shuffle seed #18518 (chenkovsky)

Documentation updates:

  • Auto detect hive column partitioning with ListingTableFactory / CREATE EXTERNAL TABLE #17232 (BlakeOrth)
  • Rename Blaze to Auron #17532 (merrily01)
  • Revert #17295 (Support from-first SQL syntax) #17520 (adriangb)
  • minor: Update doc comments on type signature #17556 (Jefffrey)
  • docs: Update documentation on Epics and Supervising Maintainers #17505 (alamb)
  • docs: Move Google Summer of Code 2025 pages to a section #17504 (alamb)
  • Upgrade to arrow 56.1.0 #17275 (alamb)
  • docs: add xorq to list of known users #17668 (dlovell)
  • docs: deduplicate links in introduction.md #17669 (Jefffrey)
  • Add explicit PMC/committers list to governance docs page #17574 (alamb)
  • chore: Update READMEs of crates to be more consistent #17691 (Jefffrey)
  • chore: fix wasm-pack installation link in wasmtest README #17704 (Jefffrey)
  • docs: Remove disclaimer that datafusion 50.0.0 is not released #17695 (nuno-faria)
  • Bump MSRV to 1.87.0 #17724 (findepi)
  • docs: Fix 'Clicking a link in optimizer docs downloads the file instead of redirecting to github' #17723 (petern48)
  • Move misplaced upgrading entry about MSRV #17727 (findepi)
  • Introduce avg_distinct() and sum_distinct() functions to DataFrame API #17536 (Jefffrey)
  • Support WHERE, ORDER BY, LIMIT, SELECT, EXTEND pipe operators #17278 (simonvandel)
  • doc: add missing examples for multiple math functions #17018 (Adez017)
  • chore: remove homebrew publish instructions from release steps #17735 (Jefffrey)
  • Improve documentation for ordered set aggregate functions #17744 (alamb)
  • docs: fix sidebar overlapping table on configuration page on website #17738 (saimahendra282)
  • docs: add Ballista link to landing page (#17746) #17775 (Nihallllll)
  • [DOCS] Add dbt Fusion engine and R2 Query Engine to "Known Users" #17793 (dataders)
  • docs: update wasmtest README with instructions for Apple silicon #17755 (Jefffrey)
  • docs: Add SedonaDB as known user of Apache DataFusion #17806 (petern48)
  • minor: simplify docs build process & pin pip package versions #17816 (Jefffrey)
  • Cleanup user guide known users section #17834 (blaginin)
  • Fix the doc about row_groups pruning metrics in explain_usage.md #17846 (xudong963)
  • Fix docs.rs build: Replace auto_doc_cfg with doc_cfg #17845 (mbrobbel)
  • docs: Add rerun.io to known users guide #17825 (alamb)
  • chore: fix typos & pin action hashes #17855 (Jefffrey)
  • Clarify email reply instructions for invitations #17851 (rluvaton)
  • Add missing parenthesis in features documentation #17869 (Viicos)
  • Improve comments for DataSinkExec #17873 (xudong963)
  • minor: Make FunctionRegistry udafs and udwfs methods mandatory #17847 (milenkovicm)
  • docs: Improve documentation for FunctionFactory / CREATE FUNCTION #17859 (alamb)
  • Support AS, UNION, INTERSECTION, EXCEPT, AGGREGATE pipe operators #17312 (simonvandel)
  • [forward port] Change version to 50.1.0 and add changelog (#17748) #17826 (alamb)
  • chore(deps): bump maturin from 1.9.4 to 1.9.5 in /docs #17940 (dependabot[bot])
  • docs: Window::try_new_with_schema with a descriptive error message #17926 (dqkqd)
  • Support JOIN pipe operator #17969 (simonvandel)
  • Adds Object Store Profiling options/commands to CLI #18004 (BlakeOrth)
  • docs: typo in working-with-exprs.md #18033 (Weijun-H)
  • chore(deps): bump maturin from 1.9.5 to 1.9.6 in /docs #18039 (dependabot[bot])
  • [forward port] Change version to 50.2.0 and add changelog #18057 (xudong963)
  • Update committers on governance page #18015 (alamb)
  • Feat: Make current_date aware of execution timezone. #18034 (codetyri0n)
  • Add independent configs for topk/join dynamic filter #18090 (xudong963)
  • Adds Trace and Summary to CLI instrumented stores #18064 (BlakeOrth)
  • refactor: add dialect enum #18043 (dariocurr)
  • #17982 Make nvl a thin wrapper for coalesce #17991 (pepijnve)
  • minor: fix incorrect deprecation version & window docs #18093 (Jefffrey)
  • Adding hiop as known user #18114 (enryls)
  • Improve datafusion-cli object store profiling summary display #18085 (alamb)
  • Feat: Make current_time aware of execution timezone. #18040 (codetyri0n)
  • Docs: Update SQL example for current_time() and current_date(). #18200 (codetyri0n)
  • doc: Add Metrics section to the user-guide #18216 (2010YOUY01)
  • docs: Update HOWTOs for adding new functions #18089 (Jefffrey)
  • docs: fix trim for rust,ignore blocks #18239 (Jefffrey)
  • docs: refine AggregateUDFImpl::is_ordered_set_aggregate documentation #17805 (Jefffrey)
  • docs: fix broken SQL & DataFrame links in root README (#18153) #18274 (manasa-manoj-nbr)
  • doc: Contributor guide for AI-generated PRs #18237 (2010YOUY01)
  • doc: Add Join Physical Plan documentation, and configuration flag to benchmarks #18209 (jonathanc-n)
  • "Gentle Introduction to Arrow / Record Batches" #11336 #18051 (sm4rtm4art)
  • Upgrade DataFusion to arrow/parquet 57.0.0 #17888 (alamb)
  • Deduplicate range/gen_series nested functions code #18198 (Jefffrey)
  • minor: doc fixes for timestamp output format #18315 (Jefffrey)
  • Add PostgreSQL-style named arguments support for scalar functions #18019 (bubulalabu)
  • Change default prefetch_hint to 512Kb to reduce number of object store requests when reading parquet files #18160 (zhuqi-lucas)
  • Bump MSRV to 1.88.0 #18403 (harshasiddartha)
  • Change default time_zone to None (was "+00:00") #18359 (Omega359)
  • Fix instances of "the the" to be "the" in comments/docs #18478 (corasaurus-hex)
  • Update roadmap links for DataFusion Q1 2026 #18495 (alamb)
  • Add a SpillingPool to manage collections of spill files #18207 (adriangb)
  • [branch-51] Update version to 51.0.0, add Changelog #18551 (alamb)
  • [branch-51] Revert rewrite for coalesce, nvl and nvl2 simplification #18567 (alamb)

Other:

  • Extract complex default impls from AggregateUDFImpl trait #17391 (findepi)
  • chore: make TableFunction clonable #17457 (sunng87)
  • chore(deps): bump wasm-bindgen-test from 0.3.50 to 0.3.51 #17470 (dependabot[bot])
  • chore(deps): bump log from 0.4.27 to 0.4.28 #17471 (dependabot[bot])
  • Support csv truncated rows in datafusion #17465 (zhuqi-lucas)
  • chore(deps): bump indexmap from 2.11.0 to 2.11.1 #17484 (dependabot[bot])
  • chore(deps): bump chrono from 0.4.41 to 0.4.42 #17483 (dependabot[bot])
  • Improve PartialEq, Eq speed for LexOrdering, make PartialEq and PartialOrd consistent #17442 (findepi)
  • Fix array types coercion: preserve child element nullability for list types #17306 (sgrebnov)
  • better preserve statistics when applying limits #17381 (adriangb)
  • Refactor HashJoinExec to progressively accumulate dynamic filter bounds instead of computing them after data is accumulated #17444 (adriangb)
  • Fix PartialOrd for logical plan nodes and expressions #17438 (findepi)
  • chore(deps): bump sqllogictest from 0.28.3 to 0.28.4 #17500 (dependabot[bot])
  • chore(deps): bump tempfile from 3.21.0 to 3.22.0 #17499 (dependabot[bot])
  • refactor: Move SMJ tests into own file #17495 (jonathanc-n)
  • move MinAggregator and MaxAggregator to functions-aggregate-common #17492 (adriangb)
  • Update datafusion-testing pin to update expected output for extended tests #17490 (alamb)
  • update physical-plan to use datafusion-functions-aggregate-common for Min/MaxAccumulator #17502 (adriangb)
  • bug: Always use 'indent' format for explain verbose #17481 (petern48)
  • Fix ambiguous column names in substrait conversion as a result of literals having the same name during conversion. #17299 (xanderbailey)
  • Fix NULL Arithmetic Handling for Numerical Operators in Type Coercion #17418 (etolbakov)
  • Prepare for Merge Queue #17183 (blaginin)
  • bug: Support null as argument to to_local_time #17491 (petern48)
  • Implement timestamp_cast_dtype for SqliteDialect #17479 (krinart)
  • Disable required_status_checks for now #17537 (blaginin)
  • Update Bug issue template to use Bug issue type #17540 (findepi)
  • Fix predicate simplification for incompatible types in push_down_filter #17521 (adriangb)
  • Add assertion that ScalarUDFImpl implementation is consistent with declared return type #17515 (findepi)
  • Using encode_arrow_schema from arrow-rs. #17543 (samueleresca)
  • Add test for decimal256 and float math #17530 (Jefffrey)
  • Document how schema projection works. #17250 (wiedld)
  • chore(deps): bump rust_decimal from 1.37.2 to 1.38.0 #17564 (dependabot[bot])
  • chore(deps): bump semver from 1.0.26 to 1.0.27 #17566 (dependabot[bot])
  • Generalize struct-to-struct casting with CastOptions and SchemaAdapter integration #17468 (kosiew)
  • Add TableProvider::scan_with_args #17336 (adriangb)
  • Use taiki-e/install-action and binstall in CI #17573 (AdamGS)
  • Trying cargo machete to prune unused deps. #17545 (samueleresca)
  • Fix typo in error message in substring.rs #17570 (AdamGS)
  • chore(deps): bump taiki-e/install-action from 2.61.5 to 2.61.6 #17586 (dependabot[bot])
  • datafusion/substrait: enable unicode_expressions in dev-dependencies to fix substring planning test #17584 (kosiew)
  • chore: replace deprecated UnionExec API #17588 (etolbakov)
  • minor: fix compilation issue for extended tests due to missing parquet encryption flag #17579 (Jefffrey)
  • Update release README for new datafusion/physical-expr-adapter crate #17591 (xudong963)
  • chore(deps): bump indexmap from 2.11.1 to 2.11.3 #17587 (dependabot[bot])
  • chore(deps): bump serde_json from 1.0.143 to 1.0.145 #17585 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.61.6 to 2.61.8 #17615 (dependabot[bot])
  • Always run CI checks #17538 (blaginin)
  • Revert "Always run CI checks" #17629 (blaginin)
  • Bump datafusion-testing to latest #17609 (Jefffrey)
  • Use Display formatting of DataType:s in error messages #17565 (emilk)
  • avg(distinct) support for decimal types #17560 (Jefffrey)
  • chore(deps): bump taiki-e/install-action from 2.61.8 to 2.61.9 #17640 (dependabot[bot])
  • chore(deps): bump Swatinem/rust-cache from 2.8.0 to 2.8.1 #17641 (dependabot[bot])
  • Validate the memory consumption in SPM created by multi level merge #17029 (ding-young)
  • fix(SubqueryAlias): use maybe_project_redundant_column #17478 (notfilippo)
  • minor: Ensure datafusion-sql package dependencies have sql flag #17644 (Jefffrey)
  • optimizer: Rewrite IS NOT DISTINCT FROM joins as Hash Joins #17319 (2010YOUY01)
  • chore(deps): bump serde from 1.0.223 to 1.0.225 #17614 (dependabot[bot])
  • chore: Update dynamic filter formatting #17647 (rkrishn7)
  • chore(deps): bump taiki-e/install-action from 2.61.9 to 2.61.10 #17660 (dependabot[bot])
  • proto: don't include parquet feature by default #17577 (jackkleeman)
  • minor: Ensure proto crate has datetime & unicode expr flags in datafusion dev dependency #17656 (Jefffrey)
  • chore(deps): bump indexmap from 2.11.3 to 2.11.4 #17661 (dependabot[bot])
  • Support Decimal32/64 types #17501 (AdamGS)
  • minor: Improve hygiene for datafusion-functions macros #17638 (Jefffrey)
  • [unparser] Custom timestamp format for DuckDB #17653 (krinart)
  • Support LargeList for array_sort #17657 (Jefffrey)
  • Support FixedSizeList for array_except #17658 (Jefffrey)
  • chore: refactor array fn signatures & add more slt tests #17672 (Jefffrey)
  • Support FixedSizeList for array_to_string #17666 (Jefffrey)
  • minor: add SQLancer fuzzed SLT case for natural joins #17683 (Jefffrey)
  • chore: Upgrade Rust version to 1.90.0 #17677 (rkrishn7)
  • Support FixedSizeList for array_position #17659 (Jefffrey)
  • chore(deps): bump the proto group with 2 updates #16806 (dependabot[bot])
  • chore: update a bunch of dependencies #17708 (Jefffrey)
  • Support FixedSizeList for array_slice via coercion to List #17667 (Jefffrey)
  • chore(deps): bump taiki-e/install-action from 2.61.10 to 2.62.1 #17710 (dependabot[bot])
  • fix(agg/corr): return NULL when variance is zero or samples < 2 #17621 (killme2008)
  • chore(deps): bump taiki-e/install-action from 2.62.1 to 2.62.4 #17739 (dependabot[bot])
  • chore(deps): bump tempfile from 3.22.0 to 3.23.0 #17741 (dependabot[bot])
  • chore: make LimitPushPastWindows public #17736 (linhr)
  • minor: create OptimizerContext with provided ConfigOptions #17742 (MichaelScofield)
  • Add support for calling async UDF as aggregation expression #17620 (simonvandel)
  • chore(deps): bump taiki-e/install-action from 2.62.4 to 2.62.5 #17750 (dependabot[bot])
  • (fix): Lag function creates unwanted projection (#17630) #17639 (renato2099)
  • Support LargeList in array_has simplification to InList #17732 (Jefffrey)
  • chore(deps): bump wasm-bindgen-test from 0.3.51 to 0.3.53 #17642 (dependabot[bot])
  • chore(deps): bump object_store from 0.12.3 to 0.12.4 #17753 (dependabot[bot])
  • Update arrow / parquet to 56.2.0 #17631 (alamb)
  • chore(deps): bump taiki-e/install-action from 2.62.5 to 2.62.6 #17766 (dependabot[bot])
  • Keep aggregate udaf schema names unique when missing an order-by #17731 (wiedld)
  • feat : Display function alias in output column name #17690 (devampatel03)
  • Support join cardinality estimation less conservatively #17476 (jackkleeman)
  • chore(deps): bump libc from 0.2.175 to 0.2.176 #17767 (dependabot[bot])
  • chore(deps): bump postgres-types from 0.2.9 to 0.2.10 #17768 (dependabot[bot])
  • Use Expr::qualified_name() and Column::new() to extract partition keys from window and aggregate operators #17757 (masonh22)
  • chore(deps): bump taiki-e/install-action from 2.62.6 to 2.62.8 #17781 (dependabot[bot])
  • chore(deps): bump wasm-bindgen-test from 0.3.53 to 0.3.54 #17784 (dependabot[bot])
  • chore: Action some old TODOs in github actions #17694 (Jefffrey)
  • dev: Add benchmark for compilation profiles #17754 (2010YOUY01)
  • chore(deps): bump tokio-postgres from 0.7.13 to 0.7.14 #17785 (dependabot[bot])
  • chore(deps): bump serde from 1.0.226 to 1.0.227 #17783 (dependabot[bot])
  • chore(deps): bump regex from 1.11.2 to 1.11.3 #17782 (dependabot[bot])
  • Test CAST from temporal to Utf8View #17535 (findepi)
  • chore: dependabot to run weekly #17797 (comphead)
  • chore(deps): bump sysinfo from 0.37.0 to 0.37.1 #17800 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.8 to 2.62.9 #17799 (dependabot[bot])
  • Fix potential overflow when we print verbose physical plan #17798 (zhuqi-lucas)
  • Extend datatype semantic equality check to include timestamps #17777 (shivbhatia10)
  • dev: Add Apache license check to the lint script #17787 (2010YOUY01)
  • Fix: common_sub_expression_eliminate optimizer rule failed #16066 (Col-Waltz)
  • chore: remove dialect fixes in SLT tests that are outdated #17807 (Jefffrey)
  • chore(deps): bump thiserror from 2.0.16 to 2.0.17 #17821 (dependabot[bot])
  • chore(deps): bump quote from 1.0.40 to 1.0.41 #17822 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.9 to 2.62.12 #17823 (dependabot[bot])
  • chore(deps): bump serde from 1.0.227 to 1.0.228 #17827 (dependabot[bot])
  • Temporarily disable failing sql_planner benchmark query #17809 (alamb)
  • chore(deps): bump taiki-e/install-action from 2.62.12 to 2.62.13 #17836 (dependabot[bot])
  • More decimal 32/64 support - type coercsion and misc gaps #17808 (AdamGS)
  • Implement AsRef for Expr #17819 (findepi)
  • chore(deps): bump taiki-e/install-action from 2.62.13 to 2.62.14 #17840 (dependabot[bot])
  • chore(deps): bump petgraph from 0.8.2 to 0.8.3 #17842 (dependabot[bot])
  • Relax constraint that file sort order must only reference individual columns #17419 (pepijnve)
  • minor: Include consumer name in OOM message #17870 (andygrove)
  • Implement partition_statistics API for InterleaveExec #17051 (liamzwbao)
  • Add CastColumnExpr for struct-aware column casting #17773 (kosiew)
  • chore(deps): bump taiki-e/install-action from 2.62.14 to 2.62.16 #17879 (dependabot[bot])
  • chore(deps): bump crate-ci/typos from 1.37.0 to 1.37.1 #17878 (dependabot[bot])
  • Fix failing CI caused by hash collisions #17886 (liamzwbao)
  • Minor: reuse test schemas in simplify tests #17864 (alamb)
  • Make limit pushdown work for SortPreservingMergeExec #17893 (Dandandan)
  • chore(deps): bump taiki-e/install-action from 2.62.16 to 2.62.17 #17896 (dependabot[bot])
  • Consolidate apply_schema_adapter_tests #17905 (alamb)
  • Improve InListExpr plan display #17884 (pepijnve)
  • Export JoinSetTracerError from datafusion-common-runtime #17877 (JanKaul)
  • Clippy to extended_tests #17922 (blaginin)
  • chore: rename Schema print_schema_tree to tree_string #17919 (comphead)
  • chore: utilize trait upcasting for AsyncScalarUDF PartialEq & Hash #17872 (Jefffrey)
  • Refactor: Update enforce_sorting tests to use insta snapshots for easier updates #17900 (alamb)
  • chore(deps): bump flate2 from 1.1.2 to 1.1.4 #17938 (dependabot[bot])
  • chore(deps): bump actions/stale from 10.0.0 to 10.1.0 #17937 (dependabot[bot])
  • chore(deps): bump aws-credential-types from 1.2.6 to 1.2.7 #17936 (dependabot[bot])
  • chore(deps): bump rustyline from 17.0.1 to 17.0.2 #17932 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.17 to 2.62.21 #17934 (dependabot[bot])
  • chore(deps): bump crate-ci/typos from 1.37.1 to 1.37.2 #17935 (dependabot[bot])
  • chore: upgrade sqlparser #17925 (chenkovsky)
  • minor: impl Clone and Debug on CaseBuilder #17927 (timsaucer)
  • chore: Extend backtrace coverage for Execution and Internal errors #17921 (comphead)
  • chore(deps): bump taiki-e/install-action from 2.62.21 to 2.62.22 #17949 (dependabot[bot])
  • chore(deps): bump crate-ci/typos from 1.37.2 to 1.38.0 #17948 (dependabot[bot])
  • Feat: [datafusion-spark] Migrate avg from comet to datafusion-spark and add tests. #17871 (codetyri0n)
  • Update tests to use insta / make them easier to update #17945 (alamb)
  • Minor Test refactor: avoid creating the same SchemaRef #17951 (alamb)
  • Precision::<usize>::{add, sub, multiply}: avoid overflows #17929 (Tpt)
  • Resolve ListingScan projection against table schema including partition columns #17911 (mach-kernel)
  • chore(deps): bump crate-ci/typos from 1.38.0 to 1.38.1 #17960 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.22 to 2.62.23 #17959 (dependabot[bot])
  • bench: fix vectorized_equal_to bench mutated between iterations #17968 (rluvaton)
  • fix docs and broken example from #17956 #17980 (adriangb)
  • Refactor: Update replace_with_order_preserving_variants tests to use insta snapshots for easier updates #17962 (blaginin)
  • Support repartitioned() method in RepartitionExec #17990 (gabotechs)
  • Adds Instrumented Object Store to CLI #17984 (BlakeOrth)
  • Migrate join_selection tests to snapshot-based testing #17974 (blaginin)
  • bench: fix actually generate a lot of unique values in benchmark table #17967 (rluvaton)
  • Adds Instrument Mode for InstrumentedObjectStore in datafusion-cli #18000 (BlakeOrth)
  • minor: refactor Spark ascii function to reuse DataFusion ascii function code #17965 (Jefffrey)
  • chore(deps): bump taiki-e/install-action from 2.62.23 to 2.62.24 #17989 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.24 to 2.62.25 #18007 (dependabot[bot])
  • Clarify documentation that ScalarUDFImpl::simplity must not change the schema #17981 (alamb)
  • Expose trace_future and trace_block outside of common-runtime #17976 (AdamGS)
  • Adds instrumentation to get requests for datafusion-cli #18016 (BlakeOrth)
  • chore(deps): bump half from 2.6.0 to 2.7.0 #18036 (dependabot[bot])
  • chore(deps): bump aws-config from 1.8.6 to 1.8.7 #18038 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.25 to 2.62.28 #18037 (dependabot[bot])
  • refactor: cleanup naming and macro usages for binary operator #17985 (sunng87)
  • Impl gather_filters_for_pushdown for CoalescePartitionsExec #18046 (xudong963)
  • Fix bug in LimitPushPastWindows #18029 (avantgardnerio)
  • Fix SortPreservingMergeExec tree formatting with limit #18009 (AdamGS)
  • chore(deps): bump actions/setup-node from 5.0.0 to 6.0.0 #18049 (dependabot[bot])
  • chore(deps): bump sysinfo from 0.37.1 to 0.37.2 #18035 (dependabot[bot])
  • FileScanConfig: Preserve schema metadata across ser/de boundary #17966 (mach-kernel)
  • physical-plan: push filters down to UnionExec children #18054 (asubiotto)
  • Add min_max_bytes benchmark (Reproduce quadratic runtime in min_max_bytes) #18041 (ctsk)
  • Adds summary output to CLI instrumented object stores #18045 (BlakeOrth)
  • Impl spark bit not function #18018 (kazantsev-maksim)
  • chore: revert tests #18065 (comphead)
  • chore: Use an enum to express the different kinds of nullability in an array #18048 (martin-g)
  • chore(deps): bump taiki-e/install-action from 2.62.28 to 2.62.29 #18069 (dependabot[bot])
  • Split up monster test_window_partial_constant_and_set_monotonicity into smaller functions #17952 (alamb)
  • Push Down Filter Subexpressions in Nested Loop Joins as Projections #17906 (tobixdev)
  • ci: Use PR description for merge commit body in squash merges #18027 (Weijun-H)
  • Fix extended tests on main to get CI green #18096 (alamb)
  • chore(deps): bump taiki-e/install-action from 2.62.29 to 2.62.31 #18094 (dependabot[bot])
  • chore: run extended suite on PRs for critical areas #18088 (comphead)
  • chore(deps): bump taiki-e/install-action from 2.62.31 to 2.62.33 #18113 (dependabot[bot])
  • chore: remove unnecessary skip_failed_rules config in slt #18117 (Jefffrey)
  • Refactor repartition to use insta #18106 (blaginin)
  • refactor: move ListingTable over to the catalog-listing-table crate #18080 (timsaucer)
  • refactor: move arrow datasource to new datafusion-datasource-arrow crate #18082 (timsaucer)
  • Adds instrumentation to LIST operations in CLI #18103 (BlakeOrth)
  • Add extra case_when benchmarks #18097 (pepijnve)
  • Adds instrumentation to delimited LIST operations in CLI #18134 (BlakeOrth)
  • test: to_timestamp(double) for vectorized input #18147 (dqkqd)
  • Fix concat_elements_utf8view capacity initialization. #18003 (samueleresca)
  • Use < instead of = in case benchmark predicates, use Integers #18144 (pepijnve)
  • Adds instrumentation to PUT ops in the CLI #18139 (BlakeOrth)
  • [main] chore: Fix no space left on device (#18141) #18151 (alamb)
  • Fix DISTINCT ON for tables with no columns (ReplaceDistinctWithAggregate: do not fail when on input without columns) #18133 (Tpt)
  • Fix quadratic runtime in min_max_bytes #18044 (ctsk)
  • chore(deps): bump getrandom from 0.3.3 to 0.3.4 #18163 (dependabot[bot])
  • chore(deps): bump tokio from 1.47.1 to 1.48.0 #18164 (dependabot[bot])
  • chore(deps): bump indexmap from 2.11.4 to 2.12.0 #18162 (dependabot[bot])
  • chore(deps): bump bzip2 from 0.6.0 to 0.6.1 #18165 (dependabot[bot])
  • chore(deps): bump taiki-e/install-action from 2.62.33 to 2.62.34 #18194 (dependabot[bot])
  • Fix COPY TO does not produce an output file for the empty set #18074 (bert-beyondloops)
  • Add Projection struct w/ helper methods to manipulate projections #18176 (adriangb)
  • Add TableSchema helper to encapsulate file schema + partition fields #18178 (adriangb)
  • Add spilling to RepartitionExec #18014 (adriangb)
  • Adds DELETE and HEAD instrumentation to CLI #18206 (BlakeOrth)
  • [branch-50] Prepare 50.3.0 release version number and README (#18173) #18182 (alamb)
  • Fix array_has simplification with null argument #18186 (joroKr21)
  • chore(deps): bump taiki-e/install-action from 2.62.34 to 2.62.35 #18215 (dependabot[bot])
  • bench: create benchmark for lookup table like CASE WHEN #18203 (rluvaton)
  • Adds instrumentation to COPY operations in the CLI #18227 (BlakeOrth)
  • Consolidate core_integration/datasource and rename parquet_source --> parquet_integration #18226 (alamb)
  • CoalescePartitionsExec fetch is not consistent with one partition and more than one partition #18245 (zhuqi-lucas)
  • Migrate core test to insta part 3 #16978 (Chen-Yuan-Lai)
  • chore(deps): bump taiki-e/install-action from 2.62.35 to 2.62.36 #18240 (dependabot[bot])
  • Fix: Do not normalize table names when deserializing from protobuf #18187 (drin)
  • Revert "chore: revert tests (#18065)" #18255 (dqkqd)
  • Refactor nvl2 Function to Support Lazy Evaluation and Simplification via CASE Expression #18191 (kosiew)
  • fix null count stats computation #18276 (adriangb)
  • Improve docs and examples for DataTypeExt and FieldExt #18271 (alamb)
  • Easier construction of ScalarAndMetadata #18272 (alamb)
  • Add integration test for IO operations for listing tables queries #18229 (alamb)
  • Fix: Error rather than silently ignore extra parameter passed to ceil/floor #18265 (toxicteddy00077)
  • chore(deps): Update half to 2.7.1, ignore RUSTSEC-2025-0111 #18287 (alamb)
  • chore(deps): bump taiki-e/install-action from 2.62.36 to 2.62.38 #18293 (dependabot[bot])
  • chore(deps): bump regex from 1.11.3 to 1.12.2 #18294 (dependabot[bot])
  • chore(deps): bump clap from 4.5.48 to 4.5.50 #18292 (dependabot[bot])
  • chore(deps): bump syn from 2.0.106 to 2.0.108 #18291 (dependabot[bot])
  • Enforce unique names for is_set on first_value and last_value #18303 (marc-pydantic)
  • chore(deps): update testcontainers to 0.25.2 and drop ignore of RUSTSEC-2025-0111 #18305 (DDtKey)
  • Using try_append_value from arrow-rs 57.0.0 #18313 (samueleresca)
  • minor: Add documentation to function concat_elements_utf8view #18316 (2010YOUY01)
  • chore(deps): bump taiki-e/install-action from 2.62.38 to 2.62.40 #18318 (dependabot[bot])
  • Fix: Add projection to generate_series #18298 (mkleen)
  • Do not accept null is_set for first_value/last_value #18301 (marc-pydantic)
  • Optimize merging of partial case expression results #18152 (pepijnve)
  • chore: Format examples in doc strings - execution #18339 (CuteChuanChuan)
  • chore: Format examples in doc strings - common #18336 (CuteChuanChuan)
  • chore: Format examples in doc strings - crate datafusion #18333 (CuteChuanChuan)
  • chore: Format examples in doc strings - expr #18340 (CuteChuanChuan)
  • chore: Format examples in doc strings - datasource crates #18338 (CuteChuanChuan)
  • Insta for enforce_distrubution (easy ones) #18248 (blaginin)
  • chore: Format examples in doc strings - macros and optmizer #18354 (CuteChuanChuan)
  • chore: Format examples in doc strings - proto, pruning, and session #18358 (CuteChuanChuan)
  • chore: Format examples in doc strings - catalog listing #18335 (CuteChuanChuan)
  • ci: fix temporary file creation in tests and tighten CI check #18374 (2010YOUY01)
  • Run extended tests when there are changes to datafusion-testing pin #18310 (alamb)
  • Add simple unit test for merge in case expression #18369 (pepijnve)
  • chore(deps): bump taiki-e/install-action from 2.62.40 to 2.62.41 #18377 (dependabot[bot])
  • Refactor range/gen_series signature away from user defined #18317 (Jefffrey)
  • Adds Partitioned CSV test to object store access tests #18370 (BlakeOrth)
  • Add reproducer for consecutive RepartitionExec #18343 (NGA-TRAN)
  • chore: bump substrait version to 0.60.0 to use substrait spec v0.75.0 #17866 (benbellick)
  • Use the upstream arrow-rs coalesce kernel #17193 (zhuqi-lucas)
  • Extract out super slow planning benchmark to it's own benchmark #18388 (Omega359)
  • minor: Fix parquet pruning metrics display order #18379 (2010YOUY01)
  • chore: use enum as date_trunc granularity #18390 (comphead)
  • chore(deps): bump taiki-e/install-action from 2.62.41 to 2.62.43 #18398 (dependabot[bot])
  • Project record batches to avoid filtering unused columns in CASE evaluation #18329 (pepijnve)
  • catch errors when simplifying cast(lit(...), ...) and bubble those up #18332 (adriangb)
  • Align NowFunc::new() with canonical ConfigOptions timezone and enhance documentation #18347 (kosiew)
  • chore: Format examples in doc strings - physical expr, optimizer, and plan #18357 (CuteChuanChuan)
  • Fix: spark bit_count function #18322 (kazantsev-maksim)
  • chore: bump workspace rust version to 1.91.0 #18422 (randyli)
  • Minor: Remove unneccessary vec! in SortMergeJoinStream initialization #18430 (mapleFU)
  • minor: refactor array reverse internals #18445 (Jefffrey)
  • chore(deps): bump taiki-e/install-action from 2.62.43 to 2.62.45 #18465 (dependabot[bot])
  • chore(deps): bump crate-ci/typos from 1.38.1 to 1.39.0 #18464 (dependabot[bot])
  • chore(deps): bump rstest from 0.25.0 to 0.26.1 #18463 (dependabot[bot])
  • chore(deps): bump wasm-bindgen-test from 0.3.54 to 0.3.55 #18462 (dependabot[bot])
  • chore(deps): bump postgres-types from 0.2.10 to 0.2.11 #18461 (dependabot[bot])
  • chore(deps): bump ctor from 0.4.3 to 0.6.1 #18460 (dependabot[bot])
  • chore(deps): bump libc from 0.2.176 to 0.2.177 #18459 (dependabot[bot])
  • chore: Format examples in doc strings - functions #18353 (CuteChuanChuan)
  • Feat: Support array flatten() on List(LargeList(_)) types #18363 (sdf-jkl)
  • Reproducer tests for #18380 (resorting sorted inputs) #18352 (rgehan)
  • Update criterion to 0.7.* #18472 (Omega359)
  • chore(deps): bump taiki-e/install-action from 2.62.45 to 2.62.46 #18484 (dependabot[bot])
  • Consolidate flight examples (#18142) #18442 (cj-zhukov)
  • Support reverse for ListView #18424 (vegarsti)
  • Complete migrating enforce_distrubution tests to insta #18185 (blaginin)
  • Add benchmark for array_reverse #18425 (vegarsti)
  • chore: simplify map const #18440 (chenkovsky)
  • Fix an out of date comment for snapshot_physical_expr #18498 (AdamGS)
  • Disable parquet_encryption by default in datafusion-sqllogictests #18492 (zhuqi-lucas)
  • Make extended test to use optional parquet_encryption feature #18507 (zhuqi-lucas)
  • Consolidate udf examples (#18142) #18493 (cj-zhukov)
  • test: add prepare alias slt test #18522 (dqkqd)
  • CI: add clippy::needless_pass_by_value rule #18468 (2010YOUY01)
  • Refactor create_hashes to accept array references #18448 (adriangb)
  • chore: Format examples in doc strings - spark, sql, sqllogictest, sibstrait #18443 (CuteChuanChuan)
  • refactor: simplify calculate_binary_math in datafusion-functions #18525 (Jefffrey)
  • ci: enforce needless_pass_by_value for datafusion-optimzer #18533 (jizezhang)
  • Add comments to Cargo.toml about workspace overrides #18526 (alamb)
  • minor: Remove inconsistent comment #18539 (2010YOUY01)
  • Refactor log() signature to use coercion API + fixes #18519 (Jefffrey)
  • [branch-51] Update Changelog #18592 (alamb)
  • [branch-51] bugfix: correct regression on TableType in into_view in DF51 #18618 (timsaucer)
  • [branch-51]: Add timezone to date_trunc fast path (#18596) #18629 (hareshkh)
  • [branch-51] bugfix: select_columns should validate column names #18624 (timsaucer)

Credits

Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.

    88	dependabot[bot]
    49	Jeffrey Vo
    35	Andrew Lamb
    20	Yongting You
    19	Adrian Garcia Badaracco
    14	Blake Orth
    12	Pepijn Van Eeckhoudt
    12	Piotr Findeisen
    11	Chen Chongchen
    11	Dmitrii Blaginin
    11	Yu-Chuan Hung
     9	Jonathan Chen
     9	Khanh Duong
     9	Oleks V
     9	Peter Nguyen
     8	Alex Huang
     8	Qi Zhu
     8	Raz Luvaton
     7	Adam Gutglick
     7	Rohan Krishnaswamy
     7	Tim Saucer
     7	kosiew
     6	xudong.w
     5	Nuno Faria
     4	Dhanush
     4	Samuele Resca
     4	Simon Vandel Sillesen
     4	Sriram Sundar
     4	Vegard Stikbakke
     3	Bruce Ritchie
     3	David López
     3	EeshanBembi
     3	Jack Kleeman
     3	Kazantsev Maksim
     3	Marko Milenković
     3	Thomas Tanon
     2	Andy Grove
     2	Bruno Volpato
     2	Christian
     2	Colin Marc
     2	Cora Sutton
     2	David Stancu
     2	Devam Patel
     2	Eugene Tolbakov
     2	Evgenii Glotov
     2	Kristin Cowalcijk
     2	Liam Bao
     2	Marc Brinkmann
     2	Michael Kleen
     2	Namgung Chan
     2	Ning Sun
     2	Randy
     2	Sergey Zhukov
     2	Viktor Yershov
     2	bubulalabu
     2	dennis zhuang
     2	jizezhang
     2	wiedld
     1	Ahmed Mezghani
     1	Aldrin M
     1	Alfonso Subiotto Marqués
     1	Anders
     1	Artem Medvedev
     1	Aryamaan Singh
     1	Ben Bellick
     1	Berkay Şahin
     1	Bert Vermeiren
     1	Brent Gardner
     1	Christopher Watford
     1	Dan Lovell
     1	Daniël Heres
     1	Dewey Dunnington
     1	Douglas Anderson
     1	Duong Cong Toai
     1	Emil Ernerfeldt
     1	Emily Matheys
     1	Enrico La Sala
     1	Eshed Schacham
     1	Filippo Rossi
     1	Gabriel
     1	Gene Bordegaray
     1	Georgi Krastev
     1	Haresh Khanna
     1	Heran Lin
     1	Hiroaki Yutani
     1	Ian Lai
     1	Ilya Ostanevich
     1	JanKaul
     1	Kosta Tarasov
     1	LFC
     1	Leonardo Yvens
     1	Lía Adriana
     1	Manasa Manoj
     1	Martin
     1	Martin Grigorov
     1	Martin Hilton
     1	Mason
     1	Matt Butrovich
     1	Matthew Kim
     1	Matthijs Brobbel
     1	Nga Tran
     1	Nihal Rajak
     1	Rafael Fernández
     1	Renan GEHAN
     1	Renato Marroquin
     1	Rok Mihevc
     1	Ruilei Ma
     1	Sai Mahendra
     1	Sergei Grebnov
     1	Shiv Bhatia
     1	Tobias Schwarzinger
     1	UBarney
     1	Victor Barua
     1	Victorien
     1	Vyquos
     1	Weston Pace
     1	XL Liang
     1	Xander
     1	Zhen Wang
     1	aditya singh rathore
     1	dario curreri
     1	ding-young
     1	feniljain
     1	gene-bordegaray
     1	harshasiddartha
     1	mwish
     1	peasee
     1	r1b
     1	theirix

Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.