Skip to content

Latest commit

 

History

History
408 lines (388 loc) · 37.3 KB

46.0.0.md

File metadata and controls

408 lines (388 loc) · 37.3 KB

Apache DataFusion 46.0.0 Changelog

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

Breaking changes:

  • bug: Fix NULL handling in array_slice, introduce NullHandling enum to Signature #14289 (jkosh44)
  • Update REGEXP_MATCH scalar function to support Utf8View #14449 (Omega359)
  • Introduce unified DataSourceExec for provided datasources, remove ParquetExec, CsvExec, etc #14224 (mertak-synnada)
  • Fix: Avoid recursive external error wrapping #14371 (getChan)
  • Add DataFusionError::Collection to return multiple DataFusionErrors #14439 (eliaperantoni)
  • function: Allow more expressive array signatures #14532 (jkosh44)
  • feat: add resolved target to DmlStatement (to eliminate need for table lookup after deserialization) #14631 (milenkovicm)
  • Signature::Coercible with user defined implicit casting #14440 (jayzhan211)
  • Remove CountWildcardRule in Analyzer and move the functionality in ExprPlanner, add plan_aggregate and plan_window to planner #14689 (jayzhan211)
  • Simplify FileSource::create_file_opener's signature #14798 (AdamGS)
  • StatisticsV2: initial statistics framework redesign #14699 (Fly-Style)
  • fix(substrait): Do not add implicit groupBy expressions in LogicalPlanBuilder or when building logical plans from Substrait #14860 (anlinc)

Performance related:

  • perf: Improve median with no grouping by 2X #14399 (2010YOUY01)
  • Improve performance 10%-100% in FIRST_VALUE / LAST_VALUE by not sort rows in FirstValueAccumulator #14402 (blaginin)
  • Speed up uuid UDF (40x faster) #14675 (simonvandel)
  • script to export benchmark information as Line Protocol format #14662 (logan-keede)
  • perf: Drop RowConverter from GroupOrderingPartial #14566 (ctsk)
  • Speedup to_hex (~2x faster) #14686 (simonvandel)

Implemented enhancements:

  • feat: Speed up struct and named_struct using invoke_with_args #14276 (pepijnve)
  • feat: add hint for missing fields #14521 (Lordworms)
  • feat: Add support for --mem-pool-type and --memory-limit options to multiple benchmarks #14642 (Kontinuation)
  • feat: Implement UNION ALL BY NAME #14538 (rkrishn7)
  • feat: Add ScalarUDF support in FFI crate #14579 (timsaucer)
  • feat: Improve datafusion-cli memory usage and considering reserve mem… #14766 (zhuqi-lucas)

Fixed bugs:

  • fix: Limits are not applied correctly #14418 (zhuqi-lucas)
  • fix(ci): build error with wasm #14494 (Lordworms)
  • fix(doc): remove AWS_PROFILE from supported S3 configuration #14492 (hussein-awala)
  • fix: List of FixedSizeList coercion issue in SQL #14468 (alan910127)
  • fix: order by expr rewrite fix #14486 (akoshchiy)
  • fix: rewrite fetch, skip of the Limit node in correct order #14496 (evenyag)
  • fix: Capture nullability in Values node planning #14472 (rkrishn7)
  • fix: case-sensitive quoted identifiers in DELETE statements #14584 (nantunes)
  • fix: Substrait serializer clippy error: not calling truncate #14723 (niebayes)
  • fix: normalize column names in table constraints #14794 (jonahgao)
  • fix: we are missing the unlimited case for bounded streaming when usi… #14815 (zhuqi-lucas)
  • fix: use return_type_from_args and mark nullable if any of the input is nullable #14841 (rluvaton)

Documentation updates:

  • Add related source code locations to errors #13664 (eliaperantoni)
  • docs: Fix create_udf examples #14405 (nuno-faria)
  • Script and documentation for regenerating sqlite test files #14290 (Omega359)
  • Improve documentation about extended tests #14320 (alamb)
  • Add Cargo.lock #14483 (mbrobbel)
  • Test all examples from library-user-guide & user-guide docs #14544 (ugoa)
  • Add guideline for GSoC 2025 applicants under Contributor Guide #14582 (oznur-synnada)
  • Fix typo in comments #14605 (byte-sourcerer)
  • Update Community Events in concepts-readings-events.md #14629 (oznur-synnada)
  • Minor: Add docs and examples for DataFusionErrorBuilder #14551 (alamb)
  • docs: Add Sleeper to list of known users #14648 (m09526)
  • Add documentation for prepare statements. #14639 (dhegberg)
  • Update features / status documentation page #14645 (alamb)
  • Add union_extract scalar function #12116 (gstvg)
  • Fix CI doctests on main #14667 (alamb)
  • chore: adding Linkedin follow page #14676 (comphead)
  • Improve EnforceSorting docs. #14673 (wiedld)
  • Specify rust toolchain explicitly, document how to change it #14655 (alamb)
  • Create gsoc_project_ideas.md #14774 (oznur-synnada)
  • docs: Add additional info about memory reservation to the doc of MemoryPool #14789 (Kontinuation)
  • docs: Add instruction to build #14694 (dentiny)
  • Update website links #14846 (oznur-synnada)
  • Improve benchmark docs #14820 (carols10cents)
  • Add polygon.io to user list #14871 (xudong963)
  • Update dft in intro "Known Users" #14875 (matthewmturner)
  • Add statistics_truncate_length parquet writer config #14782 (akoshchiy)
  • minor: Update docs and error messages about what SQL dialects are supported #14893 (AdamGS)
  • Minor: Add Development Environment to Documentation Index #14890 (alamb)
  • Examples: boundary analysis example for AND/OR conjunctions #14735 (clflushopt)
  • Allow setting the recursion limit for sql parsing #14756 (cetra3)
  • Document SQL literal syntax and escaping #14934 (alamb)

Other:

  • Fix join type coercion when joining 2 relations with the same name via DataFrame API #14387 (alamb)
  • Minor: fix typo in test name #14403 (alamb)
  • test: add regression test for unnesting dictionary encoded columns #14395 (duongcongtoai)
  • chore: Upgrade to arrow/parquet 54.1.0 and fix clippy/ci #14415 (Weijun-H)
  • bump arrow version to 54.1.0 and fix clippy error #14414 (Lordworms)
  • Support array_concat for Utf8View #14378 (alamb)
  • Fully support LIKE/ILIKE with Utf8View #14379 (alamb)
  • Fix null input in map_keys/values #14401 (cht42)
  • Remove dependency on datafusion_catalog from datafusion-cli #14398 (alamb)
  • chore(deps): update substrait requirement from 0.52 to 0.53 #14419 (dependabot[bot])
  • move resolve_table_referencesout ofdatafusion-catalog` #14441 (logan-keede)
  • Fix a clippy warning #14445 (mbrobbel)
  • Resolve a todo about using workspace dependencies #14443 (mbrobbel)
  • Support Utf8View to numeric coercion #14377 (alamb)
  • Fix regression list Type Coercion List with inner type struct which has large/view types #14385 (alamb)
  • Improve error message on unsupported correlation #14458 (findepi)
  • Replace once_cell::Lazy with std::sync::LazyLock #14480 (mbrobbel)
  • chore(deps): bump bytes from 1.9.0 to 1.10.0 in /datafusion-cli #14476 (dependabot[bot])
  • chore(deps): bump clap from 4.5.27 to 4.5.28 in /datafusion-cli #14477 (dependabot[bot])
  • chore: Fix link to issue and expand comment #14473 (findepi)
  • Make Pushdown Filters Public #14471 (cetra3)
  • Minor: cargo fmt to fix CI #14487 (alamb)
  • chore: clean up dependencies for datafusion cli #14484 (comphead)
  • Provide user-defined invariants for logical node extensions. #14329 (wiedld)
  • DFParser should skip unsupported COPY INTO #14382 (osipovartem)
  • Improve Unparser (scalar_to_sql) to respect dialect timestamp type overrides #14407 (sgrebnov)
  • Fix link to volcano parallelism paper #14497 (lewiszlw)
  • chore(deps): bump aws-config from 1.5.15 to 1.5.16 in /datafusion-cli #14500 (dependabot[bot])
  • chore: Add more LIKE with escape tests #14501 (findepi)
  • Fix a clippy warning in datafusion-sqllogictest #14506 (mbrobbel)
  • minor: improve PR template #14507 (alamb)
  • Support Dictionary and List types in scalar_to_sql #14346 (cetra3)
  • Serialize parquet_options in datafusion-proto #14465 (blaginin)
  • make datafusion-catalog-listing and move some implementation of listing out of datafusion/core/datasource/listing #14464 (logan-keede)
  • refactor: remove uses of arrow_buffer & arrow_array and use reexport in arrow instead #14503 (Chen-Yuan-Lai)
  • core: Support uncorrelated EXISTS #14474 (findepi)
  • chore(deps): Update sqlparser to 0.54.0 #14255 (alamb)
  • Validate and unpack function arguments tersely #14513 (findepi)
  • bug: Fix edge cases in array_slice #14489 (jkosh44)
  • Feat: Add fetch to CoalescePartitionsExec #14499 (mertak-synnada)
  • Improve error messages to include the function name. #14511 (Omega359)
  • to_unixtime does not support timestamps with a timezone #14490 (Omega359)
  • bug: Remove array_slice two arg variant #14527 (jkosh44)
  • Minor: deprecate unused index mod #14534 (zhuqi-lucas)
  • Fix config_namespace macro symbol usage #14520 (davisp)
  • functions: Remove NullHandling from scalar funcs #14531 (jkosh44)
  • Relax physical schema validation #14519 (findepi)
  • Minor: Update changelog for 45.0.0 and tweak CHANGELOG docs #14545 (alamb)
  • minor: polish MemoryStream related code #14537 (zjregee)
  • refactor: switch BooleanBufferBuilder to NullBufferBuilder in MaybeNullBufferBuilder #14504 (Chen-Yuan-Lai)
  • Allow constructing ScalarUDF from shared implementation #14541 (findepi)
  • some dependency removals and setup for refactor of FileScanConfig #14543 (logan-keede)
  • Always use StringViewArray as output of substr #14498 (Kev1n8)
  • refactor: remove remaining uses of arrow_array and use reexport in arrow instead #14528 (Chen-Yuan-Lai)
  • chore: update datafusion-testing pin to fix extended tests #14556 (alamb)
  • chore: remove partition_keys from (Bounded)WindowAggExec #14526 (irenjj)
  • chore(deps): bump nix from 0.28.0 to 0.29.0 #14559 (dependabot[bot])
  • use a single row_count column during predicate pruning instead of one per column #14295 (adriangb)
  • Update proto to support to/from json with an extension codec #14561 (Omega359)
  • Remove useless test util #14570 (xudong963)
  • minor: Move file compression to datafusion-catalog-listing #14555 (logan-keede)
  • chore(deps): bump strum from 0.26.3 to 0.27.0 #14573 (dependabot[bot])
  • Minor: remove unnecessary dependencies in datafusion-sqllogictest #14578 (alamb)
  • Fix: limit is missing after removing SPM #14569 (xudong963)
  • Adding cargo clean at the end of every step #14592 (Omega359)
  • Make it easier to create a ScalarValure representing typed null (#14548) #14558 (cj-zhukov)
  • chore(deps): bump substrait from 0.53.0 to 0.53.1 #14599 (dependabot[bot])
  • refactor: remove uses of arrow_schema and use reexport in arrow instead #14597 (Chen-Yuan-Lai)
  • Benchmark showcasing with_column and with_column_renamed function performance #14564 (Omega359)
  • Remove use of deprecated dict_id in datafusion-proto (#14173) #14227 (cj-zhukov)
  • refactor: Move FileSinkConfig out of Core #14585 (logan-keede)
  • Revert modification of build dependency #14606 (ugoa)
  • chore(deps): bump serialize-javascript and copy-webpack-plugin in /datafusion/wasmtest/datafusion-wasm-app #14594 (dependabot[bot])
  • cli: Add nested expressions #14614 (jkosh44)
  • Minor: remove some unnecessary dependencies #14615 (logan-keede)
  • Disable extended tests (extended_tests) that are failing on runner #14604 (alamb)
  • minor: check size overflow before string repeat build #14575 (wForget)
  • Speedup date_trunc (~20% time reduction) #14593 (simonvandel)
  • equivalence classes: use normalized mapping for projection #14327 (askalt)
  • chore(deps): bump prost-build from 0.13.4 to 0.13.5 #14623 (dependabot[bot])
  • chore(deps): bump bzip2 from 0.5.0 to 0.5.1 #14620 (dependabot[bot])
  • chore(deps): bump clap from 4.5.28 to 4.5.29 #14619 (dependabot[bot])
  • chore(deps): bump sqllogictest from 0.26.4 to 0.27.0 #14598 (dependabot[bot])
  • Fix ci test #14625 (xudong963)
  • chore(deps): group prost and pbjson dependabot updates #14626 (mbrobbel)
  • chore(deps): bump substrait from 0.53.1 to 0.53.2 #14627 (dependabot[bot])
  • refactor: Move various parts of datasource out of core #14616 (logan-keede)
  • Use take_function_args in more places #14525 (lgingerich)
  • Minor: remove unused AutoFinishBzEncoder #14630 (jonahgao)
  • Add test for nullable doesn't work when create memory table #14624 (xudong963)
  • Fallback to Utf8View for Dict(_, Utf8View) in type_union_resolution_coercion #14602 (jayzhan211)
  • refactor: Make catalog datasource #14643 (logan-keede)
  • Implement predicate pruning for not like expressions #14567 (UBarney)
  • Migrate math functions to implement invoke_with_args #14658 (lewiszlw)
  • bug: fix offset type mismatch when prepending lists #14672 (friendlymatthew)
  • Minor: remove confusing update_plan_from_children call from EnforceSorting #14650 (xudong963)
  • Improve UX Rename FileScanConfig::new_exec to FileScanConfig::build #14670 (alamb)
  • Consolidate and expand ident normalization tests #14374 (alamb)
  • Update GitHub CI run image for license check job #14674 (findepi)
  • Allow extensions_options to accept Option field #14664 (goldmedal)
  • Minor: Re-export datafusion_expr_common crate #14696 (jayzhan211)
  • Migrate the internal and testing functions to invoke_with_args #14693 (goldmedal)
  • Improve docs TableSource and DefaultTableSource #14665 (alamb)
  • Improve SQL Planner docs #14669 (alamb)
  • MIgrate math function macro to implement invoke_with_args #14690 (goldmedal)
  • Improve downcast_value! macro #14683 (findepi)
  • chore(deps): bump tempfile from 3.16.0 to 3.17.0 #14713 (dependabot[bot])
  • bug: improve schema checking for insert into cases #14572 (zhuqi-lucas)
  • Early exit on column normalisation to improve DataFrame performance #14636 (blaginin)
  • Add example for LogicalPlanBuilder::insert_into #14663 (alamb)
  • optimize performance of the repeat function (up to 50% faster) #14697 (zjregee)
  • AggregateUDFImpl::schema_name and AggregateUDFImpl::display_name for customizable name #14695 (jayzhan211)
  • Add an example of boundary analysis simple expressions. #14688 (clflushopt)
  • chore(deps): bump arrow-ipc from 54.1.0 to 54.2.0 #14719 (dependabot[bot])
  • chore(deps): bump strum from 0.27.0 to 0.27.1 #14718 (dependabot[bot])
  • minor: enable decimal dictionary sbbf pruning test #14711 (korowa)
  • chore(deps): bump sqllogictest from 0.27.0 to 0.27.1 #14717 (dependabot[bot])
  • minor: simplify union_extract code #14640 (alamb)
  • make DefaultSubstraitProducer public #14721 (gabotechs)
  • chore: Migrate Encoding functions to invoke_with_args #14727 (irenjj)
  • chore: Migrate Core Functions to invoke_with_args #14725 (niebayes)
  • Fix off by 1 in decimal cast to lower precision #14731 (findepi)
  • migrate string functions to inovke_with_args #14722 (zjregee)
  • chore: Migrate Array Functions to invoke_with_args #14726 (irenjj)
  • chore: Migrate Regex function to invoke_with_args #14728 (irenjj)
  • bug: Fix memory reservation and allocation problems for SortExec #14644 (Kontinuation)
  • Skip target in taplo checks #14747 (findepi)
  • chore(deps): bump uuid from 1.13.1 to 1.13.2 #14739 (dependabot[bot])
  • chore(deps): bump blake3 from 1.5.5 to 1.6.0 #14741 (dependabot[bot])
  • chore(deps): bump tempfile from 3.17.0 to 3.17.1 #14742 (dependabot[bot])
  • chore(deps): bump clap from 4.5.29 to 4.5.30 #14743 (dependabot[bot])
  • chore(deps): bump parquet from 54.1.0 to 54.2.0 #14744 (dependabot[bot])
  • Speed up chr UDF (~4x faster) #14700 (simonvandel)
  • Support aliases in ConstEvaluator #14734 (joroKr21)
  • AggregateUDFImpl::window_function_schema_name and AggregateUDFImpl::window_function_display_name for window aggregate function #14750 (jayzhan211)
  • chore: migrate crypto functions to invoke_with_args #14764 (Chen-Yuan-Lai)
  • minor: remove custom extract_ok! macro #14733 (ctsk)
  • Minor: Further Clean-up in Enforce Sorting #14732 (berkaysynnada)
  • chore(deps): bump arrow-flight from 54.1.0 to 54.2.0 #14786 (dependabot[bot])
  • chore(deps): bump serde_json from 1.0.138 to 1.0.139 #14784 (dependabot[bot])
  • dependabot: group arrow/parquet minor/patch bumps, remove limit #14730 (mbrobbel)
  • Map access supports constant-resolvable expressions #14712 (Lordworms)
  • Fix build after logical conflict #14791 (alamb)
  • Fix CI job test-datafusion-pyarrow #14790 (Owen-CH-Leung)
  • Use doc_auto_cfg, logo and favicon for docs.rs #14746 (mbrobbel)
  • chore(deps): bump sqllogictest from 0.27.1 to 0.27.2 #14785 (dependabot[bot])
  • Fix CI fail for extended test (by freeing up more disk space in CI runner) #14745 (2010YOUY01)
  • chore: Benchmark deps cleanup #14793 (findepi)
  • chore: Fix test not to litter in repository #14795 (findepi)
  • chore(deps): bump testcontainers from 0.23.2 to 0.23.3 #14787 (dependabot[bot])
  • chore(deps): bump serde from 1.0.217 to 1.0.218 #14788 (dependabot[bot])
  • refactor: move DataSource to datafusion-datasource #14671 (logan-keede)
  • Fix Clippy 1.85 warnings #14800 (mbrobbel)
  • Allow FileSource-specific repartitioning #14754 (AdamGS)
  • Bump MSRV to 1.82, toolchain to 1.85 #14811 (mbrobbel)
  • Chore/Add additional FFI unit tests #14802 (timsaucer)
  • Minor: comment in Cargo.toml about MSRV #14809 (alamb)
  • Remove unused crate dependencies #14827 (findepi)
  • fix(physical-expr): Remove empty constants check when ordering is satisfied #14829 (rkrishn7)
  • chore(deps): bump log from 0.4.25 to 0.4.26 #14847 (dependabot[bot])
  • Minor: Ignore examples output directory #14840 (AdamGS)
  • Add support for Dictionary to AST datatype in unparser #14783 (cetra3)
  • Add range table function #14830 (simonvandel)
  • chore: migrate invoke_batch to invoke_with_args for unicode function #14856 (onlyjackfrost)
  • test: change test_function macro to use return_type_from_args instead of return_type #14852 (rluvaton)
  • Move FileSourceConfig and FileStream to the new datafusion-datasource #14838 (AdamGS)
  • Minor: Counting elapsed_compute in BoundedWindowAggExec #14869 (2010YOUY01)
  • Optimize gcd for array and scalar case by avoiding make_scalar_function where has unnecessary conversion between scalar and array #14834 (jayzhan211)
  • refactor: replace OnceLock with LazyLock #14870 (AmosAidoo)
  • Workaround for compilation error due to rkyv#434. #14863 (ryzhyk)
  • chore(deps): bump uuid from 1.13.2 to 1.14.0 #14866 (dependabot[bot])
  • refactor: replace OnceLock with LazyLock #14880 (AmosAidoo)
  • chore: migrate to invoke_with_args for datetime functions #14876 (onlyjackfrost)
  • Fix regenerate_sqlite_files.sh due to changes in sqllogictests #14881 (alamb)
  • Move FileFormat and related pieces to datafusion-datasource #14873 (AdamGS)
  • fix duplicated schema name error from count wildcard #14824 (jayzhan211)
  • replace TypeSignature::String with TypeSignature::Coercible for trim functions #14865 (zjregee)
  • Window Functions Order Conservation -- Follow-up On Set Monotonicity #14813 (berkaysynnada)
  • Implement builder style API for ParserOptions #14887 (kosiew)
  • chore: Attach Diagnostic to "function x does not exist" error #14849 (onlyjackfrost)
  • Fix: External sort failing on StringView due to shared buffers #14823 (2010YOUY01)
  • refactor: make SqlToRel::new derive the parser options from the context provider #14822 (niebayes)
  • Datafusion-cli: Redesign the datafusion-cli execution and print, make it totally streaming printing without memory overhead #14877 (zhuqi-lucas)
  • chore: Strip debuginfo symbols for release #14843 (comphead)
  • chore(deps): bump zstd from 0.13.2 to 0.13.3 #14889 (dependabot[bot])
  • Add DataFrame fill_null #14769 (kosiew)
  • Cancellation benchmark #14818 (carols10cents)
  • Include struct name on FileScanConfig debug impl #14883 (alamb)
  • Preserve the name of grouping sets in SimplifyExpressions #14888 (joroKr21)
  • Require Debug for DataSource #14882 (alamb)
  • Update regenerate sql dep, revert runner changes. #14901 (Omega359)
  • chore(deps): bump flate2 from 1.0.35 to 1.1.0 #14848 (dependabot[bot])
  • replace TypeSignature::String with TypeSignature::Coercible for starts_with #14812 (zjregee)
  • Dataframe with_column and with_column_renamed performance improvements #14653 (Omega359)
  • chore(deps): bump uuid from 1.14.0 to 1.15.1 #14911 (dependabot[bot])
  • chore(deps): bump libc from 0.2.169 to 0.2.170 #14912 (dependabot[bot])
  • Move HashJoin from RawTable to HashTable #14904 (Dandandan)
  • Rename DataSource and FileSource fields for consistency #14898 (alamb)
  • Fix the null handling for to_char function #14908 (kosiew)
  • Add tests for Demonstrate EnforceSorting can remove a needed coalesce #14919 (wiedld)
  • Fix: New Datafusion-cli streaming printing way should handle corner case for only one small batch which lines are less than max_rows #14921 (zhuqi-lucas)
  • Add docs to update_coalesce_ctx_children. #14907 (wiedld)
  • chore(deps): bump the arrow-parquet group with 7 updates #14930 (dependabot[bot])
  • chore(deps): bump aws-config from 1.5.16 to 1.5.17 #14931 (dependabot[bot])
  • Add additional protobuf tests for plans that read parquet with projections #14924 (alamb)
  • Fix link in datasource readme #14928 (lewiszlw)
  • Expose build_row_filter method #14933 (xudong963)
  • Do not unescape backslashes in datafusion-cli #14844 (Lordworms)
  • Set projection before configuring the source #14685 (blaginin)
  • Add H2O.ai Database-like Ops benchmark to dfbench (join support) #14902 (zhuqi-lucas)
  • Use arrow IPC Stream format for spill files #14868 (davidhewitt)
  • refactor(properties): Split properties.rs into smaller modules #14925 (Standing-Man)
  • Fix failing extended sqlitetest on main / update datafusion-testing pin #14940 (alamb)
  • Revert Datafusion-cli: Redesign the datafusion-cli execution and print, make it totally streaming printing without memory overhead #14948 (alamb)

Credits

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

    35	Andrew Lamb
    14	Piotr Findeisen
    10	Matthijs Brobbel
    10	logan-keede
     9	Bruce Ritchie
     8	Jay Zhan
     8	Qi Zhu
     8	xudong.w
     6	Adam Gutglick
     6	Joseph Koshakow
     5	Ian Lai
     5	Lordworms
     5	Simon Vandel Sillesen
     5	zjregee
     4	Dmitrii Blaginin
     4	Kristin Cowalcijk
     4	Peter L
     4	Yongting You
     4	irenjj
     4	oznur-synnada
     4	wiedld
     3	Andy Yen
     3	Jax Liu
     3	Oleks V
     3	Rohan Krishnaswamy
     3	Tim Saucer
     3	kosiew
     3	niebayes
     3	张林伟
     2	@clflushopt
     2	Amos Aidoo
     2	Andrey Koshchiy
     2	Berkay Şahin
     2	Carol (Nichols || Goulding)
     2	Christian
     2	Dawei H.
     2	Elia Perantoni
     2	Georgi Krastev
     2	Jonah Gao
     2	Raz Luvaton
     2	Sergey Zhukov
     2	mertak-synnada
     1	Adrian Garcia Badaracco
     1	Alan Tang
     1	Albert Skalt
     1	Alex Huang
     1	Anlin Chen
     1	Artem Osipov
     1	Daniel Hegberg
     1	Daniël Heres
     1	David Hewitt
     1	Duong Cong Toai
     1	Eduard Karacharov
     1	Gabriel
     1	Hussein Awala
     1	Kaifeng Zheng
     1	Landon Gingerich
     1	Leonid Ryzhyk
     1	Li-Lun Lin
     1	Marko Milenković
     1	Matthew Kim
     1	Matthew Turner
     1	Namgung Chan
     1	Nelson Antunes
     1	Owen Leung
     1	Paul J. Davis
     1	Pepijn Van Eeckhoudt
     1	Sasha Syrotenko
     1	Sergei Grebnov
     1	UBarney
     1	Yingwen
     1	Zhen Wang
     1	cht42
     1	cjw
     1	dentiny
     1	gstvg
     1	m09526
     1	nuno-faria

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