This release consists of 296 commits from 73 contributors. See credits at the end of this changelog for more information.
Breaking changes:
- feat: expose centroids in approx_percentile_cont fluent api #11878 (Michael-J-Ward)
- UDAF refactor: Add PhysicalExpr trait dependency on
datafusion-expr
and remove logical expressions requirement for creating physical aggregate expression #11845 (jayzhan211) datafusion.catalog.has_headers
default value set totrue
#11919 (korowa)- Use
schema_name
to create thephysical_name
#11977 (joroKr21) - Add ability to return
LogicalPlan
by value fromTableProvider::get_logical_plan
#12113 (askalt) - Remove Sort expression (
Expr::Sort
) #12177 (findepi) - Remove TableSource::supports_filter_pushdown function #12239 (findepi)
- Remove Box from Sort #12207 (findepi)
- Avoid unnecessary move when setting SessionConfig #12260 (findepi)
- Remove unused
AggregateOptions
struct andscalar_update_factor
config setting #12241 (jc4x4) - Remove deprecated LogicalPlan::with_new_inputs function #12285 (findepi)
- Fixes missing
nth_value
UDAF expr function #12279 (jcsherin) - Remove unnecessary
Result
from return type inNamePreserver
#12358 (jonahgao) - Removed Arc wrapping for AggregateFunctionExpr #12353 (athultr1997)
Performance related:
- perf: avoid repeat format in calc_func_dependencies_for_project #12305 (haohuaijin)
Implemented enhancements:
- feat: Add map_extract module and function #11969 (Weijun-H)
- feat: use Substrait's PrecisionTimestamp and PrecisionTimestampTz instead of deprecated Timestamp #11597 (Blizzara)
- feat: support upper and lower for stringview #12138 (tshauck)
- feat: Add DateFieldExtractStyle::Strftime support for SqliteDialect unparser #12161 (peasee)
- feat: Enforce the uniqueness of map key name for the map/make_map function #12153 (Weijun-H)
- feat: Add projection to FilterExec #12281 (eejbyfeldt)
- feat: Support
FixedSizedList
inarray_distance
function #12381 (Weijun-H)
Fixed bugs:
- fix: invalid sqls when unparsing derived table with columns contains calculations, limit/order/distinct #11756 (y-f-u)
- fix: make ScalarValue::Dictionary with NULL values produce NULL arrays #11908 (mhilton)
- fix: throw error on sub-day generate_series increments #11907 (tshauck)
- fix: impl ordering for serialization/deserialization for AggregateUdf #11926 (haohuaijin)
- fix: Fix various complaints from the latest nightly clippy #11958 (itsjunetime)
- fix: move coercion of union from builder to
TypeCoercion
#11961 (jonahgao) - fix: incorrect aggregation result of
bool_and
#12017 (jonahgao) - fix: support min/max for Float16 type #12050 (korowa)
- fix: Panic non-integer for the second argument of
nth_value
function #12076 (Weijun-H) - fix: ser/de fetch in CoalesceBatchesExec #12107 (haohuaijin)
- fix: UDF, UDAF, UDWF with_alias(..) should wrap the inner function fully #12098 (Blizzara)
- fix: Produce buffered null join row only if all joined rows are failed on join filter in SMJ full join #12090 (viirya)
- fix: single partition in SortPreservingMergeExec don't take fetch #12109 (haohuaijin)
- fix: set
supports_retract_batch
to false forApproxPercentileAccumulator
#12132 (jonahgao) - fix: preserve expression names when replacing placeholders #12126 (jonahgao)
- fix: Skip buffered rows which are not joined with streamed side when checking join filter results #12159 (viirya)
- fix: preserve qualifiers when rewriting expressions #12341 (jonahgao)
- fix: support Substrait VirtualTables with no columns #12339 (Blizzara)
- fix: nested loop join requires outer table to be a FusedStream #12189 (YjyJeff)
Documentation updates:
- chore: Prepare 41.0.0-rc1 #11889 (andygrove)
- Enforce sorting handle fetchable operators, add option to repartition based on row count estimates #11875 (mustafasrepo)
- Minor: change wording for PMC membership notice #11930 (alamb)
- Minor: fix outdated link #11964 (austin362667)
- Minor: polish
Accumulator::state
docs #12053 (lewiszlw) - Fix CI check when version changes -- remove checked in file that is created by doc example #12034 (alamb)
- Add new user doc to translate logical plan to physical plan #12026 (jc4x4)
- Remove vestigal
datafusion-docs
module compilation #12081 (alamb) - Minor: Add example for configuring SessionContext #12139 (alamb)
- Make it easier to understand datafusion-cli exclusion #12188 (findepi)
- Add documentation on
EXPLAIN
andEXPLAIN ANALYZE
#12122 (devanbenz) - Add
array_distance
function #12211 (austin362667) - Minor: fix
list_distinct
alias link title #12246 (austin362667) - Support
map_keys
&map_values
for MAP type #12194 (dharanad) - Minor: Improve ExecutionMode documentation #12214 (alamb)
- Implement
kurtosis_pop
UDAF #12273 (goldmedal) - Update download page to reflect latest version (v41) #12310 (phillipleblanc)
- Fix issue with "to_date" failing to process dates later than year 2262 #12227 (MartinKolbAtWork)
- Coerce BinaryView/Utf8View to LargeBinary/LargeUtf8 on output. #12271 (wiedld)
- Add documentation about performance PRs, add (TBD) section on feature criteria #12372 (alamb)
- Implement native support StringView for
CONTAINS
function #12168 (tlm365) - Fix parquet statistics for ListingTable and Utf8View with
schema_force_string_view
, rename config option toschema_force_view_types
#12232 (wiedld) - Minor: Fix project website links #12419 (alamb)
- doc: Update MSRV policy, shortening to max(4 months, 4 releases) #12402 (comphead)
- Add a
version()
UDF #12429 (samuelcolvin) - Support timestamps and steps of less than a day for range/generate_series #12400 (Omega359)
- Improve comments on target user and unify intro summaries #12418 (alamb)
- Add 'Extensions List' page to the documentation #12420 (alamb)
- Added array_any_value function #12329 (athultr1997)
Other:
- Sync rust docs params for CI and dev #11890 (findepi)
- Update ASCII scalar function to support Utf8View #11834 #11884 (dmitrybugakov)
- Fix
Duration
vsInterval
comparisons andInterval
as LHS #11876 (samuelcolvin) - Produce clear error message when build runs with conflicting features #11895 (findepi)
- Add tests for StringView / character functions, fix
regexp_like
andregexp_match
to work with StringView #11753 (alamb) - Avoid unecessary copy when reading arrow files #11840 (XiangpengHao)
- Support NULL literal in Min/Max #11812 (xinlifoobar)
- Remove many
crate::
imports in listing table provider module #11887 (findepi) - Rename
Expr::display_name
toExpr::schema_name
, makeUNNEST
naming conform to convention #11797 (jayzhan211) - Make
CommonSubexprEliminate
top-down like #11683 (peter-toth) - Add
generate_series
tests for arrays #11921 (alamb) - Minor: use
lit(true)
andlit(false)
more #11904 (alamb) - Fix: panics in
approx_percentile_cont()
aggregate function #11934 (2010YOUY01) - Ingore shebang at top of file in
datafusion-cli
#11927 (PsiACE) - Parse Sqllogictest column types from physical schema #11929 (jonahgao)
- Update INITCAP scalar function to support Utf8View #11888 (xinlifoobar)
- Implement native support StringView for Octet Length #11906 (PsiACE)
- Implement native support StringView for Ends With #11924 (PsiACE)
- Implement native support StringView for Levenshtein #11925 (PsiACE)
- Implement native stringview support for BTRIM #11920 (Kev1n8)
- Move
LimitPushdown
to physical-optimizer crate #11945 (lewiszlw) - Minor: Improve comments in row_hash.rs for skipping aggregation #11820 (alamb)
- chore: Add SessionState to MockContextProvider just like SessionContextProvider #11940 (dharanad)
- Update labeler.yml to match crates #11937 (alamb)
- Support tuples as types #11896 (samuelcolvin)
- Support
convert_to_state
forAVG
accumulator #11734 (alamb) - minor: Update release documentation based on 41.0.0 release #11947 (andygrove)
- Make
Precision<usize>
copy to make it clear clones are not expensive #11828 (alamb) - Minor: simplify SQL number parsing and add a comment about unused #11965 (alamb)
- Support Arrays for the Map scalar functions #11712 (dharanad)
- Implement Utf8View for lpad scalar function #11941 (Omega359)
- Add native stringview support for LTRIM & RTRIM #11948 (Kev1n8)
- Move wildcard expansions to the analyzer #11681 (goldmedal)
- Add native stringview support for RIGHT #11955 (Kev1n8)
- Register get_field by default #11959 (leoyvens)
- Refactor
CoalesceBatches
to use an explicit state machine #11966 (berkaysynnada) - Implement native support StringView for find in set #11970 (PsiACE)
- test: re-enable window function over parquet with forced collisions #11939 (korowa)
- Implement native support StringView for
REPEAT
#11962 (tlm365) - Update RPAD scalar function to support Utf8View #11942 (Lordworms)
- Improve lpad udf by using a GenericStringBuilder #11987 (Omega359)
- Implement native support StringView for substr_index #11974 (PsiACE)
- Add native stringview support for LEFT #11976 (Kev1n8)
- Minor: Improve function documentation #11996 (alamb)
- Implement native support StringView for overlay #11968 (PsiACE)
- Keep the existing default catalog for
SessionStateBuilder::new_from_existing
#11991 (goldmedal) - Use tracked-consumers memory pool be the default. #11949 (wiedld)
- Update REVERSE scalar function to support Utf8View #11973 (Omega359)
- Support partial aggregation skip for boolean functions #11847 (2010YOUY01)
- feat/11953: Support StringView for TRANSLATE() fn #11967 (devanbenz)
- Update SPLIT_PART scalar function to support Utf8View #11975 (Lordworms)
- Handle arguments checking of
min
/max
function to avoid crashes #12016 (tlm365) - Fix: support NULL input for regular expression comparison operations #11985 (HuSen8891)
- Remove physical sort parameters on aggregate window functions #12009 (timsaucer)
- Minor: Use execution error in ScalarValue::iter_to_array for incorrect usage #11999 (jayzhan211)
- Fix: support NULL input for like operations #12025 (HuSen8891)
- Minor: Add error tests for min/max with 2 arguments #12024 (alamb)
- Improve performance of REPEAT functions #12015 (tlm365)
- Update SUBSTR scalar function to support Utf8View #12019 (dmitrybugakov)
- Minor: Remove wrong comment on
Accumulator::evaluate
andAccumulator::state
#12001 (lewiszlw) - Minor: cleanup
.gitignore
#12035 (alamb) - Improve documentation about
ParquetExec
/ Parquet predicate pushdown #11994 (alamb) - refactor: Move
LimitedDistinctAggregation
tophysical-optimizer
crate #12036 (Weijun-H) - Convert built-in
row_number
to user-defined window function #12030 (jcsherin) - Fix projection name with DataFrame::with_column and window functions #12000 (devanbenz)
- Update to
sqlparser-rs
v0.50.0 #12014 (samuelcolvin) - Minor: make some physical-plan properties public #12022 (emgeee)
- chore: improve variable naming conventions #12042 (caicancai)
- Fix: handle NULL input for regex match operations #12028 (HuSen8891)
- Fix compilation, change row_number() expr_fn to 0 args #12043 (alamb)
- Minor: Remove warning when building
datafusion-cli
fromDockerfile
#12018 (tlm365) - Minor: add getter method for LogicalPlanBuilder.plan #12038 (emgeee)
- Window UDF signature check #12045 (jayzhan211)
- Fix: generate_series function support string type #12002 (getChan)
- Do not add redundant subquery ordering into plan #12003 (mertak-synnada)
- Fix: Remove Unrelated Fields When Expanding Wildcards in Functional Dependency Projections #12060 (berkaysynnada)
- Update async-trait in CLI and catalog crates #12061 (findepi)
- Minor: remove clones in
coerce_plan_expr_for_schema
#12051 (jonahgao) - implement utf8_view for replace #12004 (thinh2)
- Minor: update sqllogictest to treat Utf8View as text #12033 (alamb)
- [MINOR] correct document mistakes #12068 (FANNG1)
- Plan
LATERAL
subqueries #11456 (aalexandrov) - Faster random() scalar function #12078 (2010YOUY01)
- functions: support strpos with mixed string types #12072 (nrc)
- Update to
clap
4.5.16 #12064 (findepi) - Fix the schema mismatch between logical and physical for aggregate function, add
AggregateUDFImpl::is_null
#11989 (jayzhan211) - minor: Remove unused create_row_hashes #12083 (andygrove)
- Improve rpad udf by using a GenericStringBuilder #12070 (Lordworms)
- Add test to verify count aggregate function should not be nullable #12100 (HuSen8891)
- Minor: Extract
BatchCoalescer
to its own module #12047 (alamb) - Add Utf8View support to STRPOS function #12087 (dmitrybugakov)
- Update itertools requirement from 0.12 to 0.13 #10556 (dependabot[bot])
- Fix wildcard expansion for
HAVING
clause #12046 (goldmedal) - Convert LogicalPlanBuilder to use Arc #12040 (jc4x4)
- Minor: rename
dictionary_coercion
todictionary_comparison_coercion
, add comments #12102 (alamb) - Improve documentation on
StringArrayType
trait #12027 (alamb) - Improve split_part udf by using a GenericStringBuilder #12093 (Lordworms)
- Fix compilation on main #12108 (alamb)
- minor: SortExec measure elapsed_compute time when sorting #12099 (mhilton)
- Support string concat
||
for StringViewArray #12063 (dharanad) - Minor: make RowNumber public #12110 (berkaysynnada)
- Add benchmark for SUBSTR to evaluate improvements using StringView #12111 (Kev1n8)
- [minor] Use Vec instead of primitive builders #12121 (Dandandan)
- Fix thread panic when "unreachable" SpawnedTask code is reachable. #12086 (wiedld)
- Improve
CombinePartialFinalAggregate
code readability #12128 (lewiszlw) - Use
LexRequirement
alias as much as possible #12130 (lewiszlw) array_has
avoid row converter for string type #12097 (jayzhan211)- Throw
not_impl_error
forapprox_percentile_cont
parameters validation #12133 (goldmedal) - minor: Add comments for
GroupedHashAggregateStream
struct #12127 (2010YOUY01) - fix concat dictionary(int32, utf8) bug #12143 (thinh2)
array_has
with eq kernel #12125 (jayzhan211)- Check for overflow in substring with negative start #12141 (findepi)
- Minor: add test for panic propagation #12134 (alamb)
- Add benchmark for STDDEV and VAR to Clickbench extended #12146 (alamb)
- Use Result.unwrap_or_else where applicable #12166 (findepi)
- Provide documentation of expose APIs to enable handling of type coercion at UNION plan construction. #12142 (wiedld)
- Implement groups accumulator for stddev and variance #12095 (eejbyfeldt)
- Minor: refine Partitioning documentation #12145 (alamb)
- Minor: allow to build RuntimeEnv from RuntimeConfig #12151 (theirix)
- benches: add lower benches for stringview #12152 (tshauck)
- Replace Arc::try_unwrap with Arc::unwrap_or_clone where cloning anyway #12173 (findepi)
- Enable the test for creating empty map #12176 (goldmedal)
- Remove unwrap_arc helper #12172 (findepi)
- Fix typo #12169 (findepi)
- Minor: remove vestigal github workflow
pr_comment.yml
#12182 (alamb) - Remove
AggregateExpr
trait #12096 (lewiszlw) - Deduplicate sort unparsing logic #12175 (findepi)
- Require sort expressions to be of type Sort #12171 (findepi)
- Remove
parse_vec_expr
helper #12178 (findepi) - Reuse bulk serialization helpers for protobuf #12179 (findepi)
- Remove unnecessary clones from
.../logical_plan/builder.rs
#12196 (findepi) - Remove unnecessary clones with clippy #12197 (findepi)
- Make RuntimeEnvBuilder rather than RuntimeConfig #12157 (devanbenz)
- Minor: Fix grouping set typo #12216 (lewiszlw)
- Unbounded SortExec (and Top-K) Implementation When Req's Are Satisfied #12174 (berkaysynnada)
- Remove normalize_with_schemas function #12233 (findepi)
- Update AWS dependencies in CLI #12229 (findepi)
- Avoid Arc::clone when serializing physical expressions #12235 (findepi)
- Confirming UDF aliases are serialized correctly #12219 (edmondop)
- Minor: Reuse
NamePreserver
inSimplifyExpressions
#12238 (jonahgao) - Remove redundant argument and improve error message #12217 (findepi)
- Remove deprecated from_plan function #12265 (findepi)
- Remove redundant result of
AggregateFunctionExpr::field
#12258 (lewiszlw) - Define current arrow_cast behavior for BinaryView #12200 (wiedld)
- Update prost dependency #12237 (findepi)
- Bump webpack from 5.88.2 to 5.94.0 in /datafusion/wasmtest/datafusion-wasm-app #12236 (dependabot[bot])
- Avoid redundant pass-by-value in physical optimizer #12261 (findepi)
- Remove FileScanConfig::repartition_file_groups function #12242 (findepi)
- Make group expressions nullable more accurate #12256 (lewiszlw)
- Avoid redundant pass-by-value in optimizer #12262 (findepi)
- Support alternate format for Date32 unparsing (TEXT/SQLite) #12282 (sgrebnov)
- Extract drive-by fixes from PR 12135 for easier reviewing #12240 (itsjunetime)
- Move
CombinePartialFinalAggregate
rule into physical-optimizer crate #12167 (lewiszlw) - Minor: Add `RuntimeEnvBuilder::build_arc() #12213 (alamb)
- Introduce
Signature::Coercible
#12275 (jayzhan211) - fix hash-repartition panic #12297 (thinh2)
- Remove unsafe Send impl from PriorityMap #12289 (findepi)
- test: check record count and types in parquet window test #12277 (korowa)
- Optimize
struct
andnamed_struct
functions #11688 (Rafferty97) - Update the CONCAT scalar function to support Utf8View #12224 (devanbenz)
- chore: Fix warnings produced by shellcheck on bench.sh #12303 (eejbyfeldt)
- test: re-enable merge join test with forced collisions #12276 (korowa)
- Fix various typos in aggregation doc #12301 (lewiszlw)
- Improve binary scalars display #12192 (lewiszlw)
- Minor: Reduce string allocations in ScalarValue::binary display #12322 (alamb)
- minor: Add PartialEq, Eq traits to StatsType #12327 (andygrove)
- Update to
arrow
/parquet
53.0.0
,tonic
,prost
,object_store
,pyo3
#12032 (alamb) - Minor: Update Sanity Checker Error Messages #12333 (berkaysynnada)
- Improve & unify validation in LogicalPlan::with_new_exprs #12264 (findepi)
- Support the custom terminator for the CSV file format #12263 (goldmedal)
- Support try_from_array and eq_array for ScalarValue::Union #12208 (joroKr21)
- Fix some clippy warnings #12346 (mbrobbel)
- minor: reuse SessionStateBuilder methods for default builder #12330 (comphead)
- Push down null filters for more join types #12348 (Dandandan)
- Move
TopKAggregation
rule intophysical-optimizer
crate #12334 (lewiszlw) - Support Utf8View and BinaryView in substrait serialization. #12199 (wiedld)
- Fix Possible Congestion Scenario in
SortPreservingMergeExec
#12302 (berkaysynnada) - Minor: Re-export variable provider #12351 (lewiszlw)
- Support protobuf encoding and decoding of
UnnestExec
#12344 (joroKr21) - Fix subquery alias table definition unparsing for SQLite #12331 (sgrebnov)
- Remove deprecated ScalarValue::get_datatype #12361 (findepi)
- Improve StringView support for SUBSTR #12044 (Kev1n8)
- Minor: improve performance of
ScalarValue::Binary*
debug #12323 (alamb) - Apply non-nested kernel for non-nested in
array_has
andinlist
#12164 (jayzhan211) - Faster
character_length()
string function for ASCII-only case #12356 (2010YOUY01) - Unparse TableScan with projections, filters or fetch to SQL string #12158 (goldmedal)
- Minor: Support protobuf serialization for Utf8View and BinaryView #12165 (Lordworms)
- Minor: Add tests for using FilterExec when parquet was pushed down #12362 (alamb)
- Minor: Add getter for logical optimizer rules #12379 (maronavenue)
- Update sqllogictest requirement from 0.21.0 to 0.22.0 #12388 (dependabot[bot])
- Support StringView for binary operators #12212 (tlm365)
- Support for SIMILAR TO for physical plan #12350 (theirix)
- Remove deprecated expression optimizer's utils #12390 (findepi)
- Minor: Remove redundant usage of clone #12392 (waruto210)
- Introduce the
DynamicFileCatalog
indatafusion-catalog
#11035 (goldmedal) - tests: enable fuzz for filtered anti-semi NLJoin #12360 (korowa)
- Refactor
SqlToRel::sql_expr_to_logical_expr_internal
to reduce stack size #12384 (Jefffrey) - Reuse
spill_record_batch_by_size
function #12389 (lewiszlw) - minor: improve join fuzz tests debug kit #12397 (comphead)
- Fix invalid ref in UserDefinedLogicalNodeCore doc #12396 (dttung2905)
- Don't push down IsNotNull for
null_equals_null
case #12404 (Dandandan) - Fix:
substr()
on StringView column's behavior is inconsistent with the old version #12383 (2010YOUY01) - validate and adjust Substrait NamedTable schemas (#12223) #12245 (vbarua)
- Bump rstest from 0.17.0 to 0.22.0 in /datafusion-cli #12413 (dependabot[bot])
- fix tpc-h parquet setting to respect global options #12405 (XiangpengHao)
- Bump dirs from 4.0.0 to 5.0.1 in /datafusion-cli #12411 (dependabot[bot])
- Allow using dictionary arrays as filters #12382 (adriangb)
- Add support for Utf8View, Boolean, Date32/64, int32/64 for writing hive style partitions #12283 (Omega359)
- Bump env_logger from 0.9.3 to 0.11.5 in /datafusion-cli #12410 (dependabot[bot])
- Check window functions by str for with_column #12431 (timsaucer)
- Fix incorrect OFFSET during LIMIT pushdown. #12399 (wiedld)
- Fix: upper case qualifier wildcard bug #12426 (JasonLi-cn)
- Fix: Internal error in regexp_replace() for some StringView input #12203 (devanbenz)
- Automate sqllogictest for StringView (for one function,
substr
) #12433 (2010YOUY01) - Update concat_ws scalar function to support Utf8View #12309 (devanbenz)
- Bump serve-static and express in /datafusion/wasmtest/datafusion-wasm-app #12434 (dependabot[bot])
- Minor: add err on
create
temporary
table #12439 (hailelagi) - Minor: Add a test for version() function #12441 (alamb)
- Handle case-sensitive identifier when decorrelating predicate subquery #12443 (goldmedal)
- Bump send and express in /datafusion/wasmtest/datafusion-wasm-app #12447 (dependabot[bot])
- Add PartialOrd for the DF subfields/structs for the WindowFunction expr #12421 (ngli-me)
- Making avro_to_arrow::schema::to_arrow_schema public #12452 (ameyc)
- Bump rustyline from 11.0.0 to 14.0.0 in /datafusion-cli #12407 (dependabot[bot])
- Minor: add
ListingOptions::with_file_extension_opt
#12461 (alamb) - Improve PhysicalExpr and Column documentation #12457 (alamb)
- fix length error with
array_has
#12459 (samuelcolvin)
Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.
39 Andrew Lamb
35 Piotr Findeisen
15 张林伟
10 Jax Liu
9 Jay Zhan
9 Jonah Gao
9 dependabot[bot]
8 wiedld
7 Chojan Shang
7 WeblWabl
7 Yongting You
6 Berkay Şahin
6 Eduard Karacharov
6 Tai Le Manh
6 kf zheng
5 Alex Huang
5 Bruce Ritchie
5 Lordworms
5 Samuel Colvin
4 Andy Grove
4 Dharan Aditya
4 HuSen
4 Huaijin
3 Arttu
3 Austin Liu
3 Daniël Heres
3 Dmitry Bugakov
3 Emil Ejbyfeldt
3 Georgi Krastev
3 JC
3 Oleks V
3 Trent Hauck
3 iamthinh
2 Athul T R
2 June
2 Liang-Chi Hsieh
2 Martin Hilton
2 Matt Green
2 Sergei Grebnov
2 Tim Saucer
2 Xiangpeng Hao
2 Xin Li
2 jcsherin
2 theirix
1 Adrian Garcia Badaracco
1 Albert Skalt
1 Alexander Alexandrov
1 Alexander Rafferty
1 Amey Chaugule
1 Cancai Cai
1 Dao Thanh Tung
1 Edmondo Porcu
1 FANNG
1 Haile
1 JasonLi
1 Jeffrey Vo
1 Leonardo Yvens
1 Maron Montano
1 Martin Kolb
1 Matthijs Brobbel
1 Michael J Ward
1 Mustafa Akur
1 Namgung Chan
1 Nick Cameron
1 Peter Toth
1 Phillip LeBlanc
1 Victor Barua
1 YjyJeff
1 mertak-synnada
1 ngli-me
1 peasee
1 waruto
1 yfu
Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.