4.0.0
What's New ๐ฃ
This release introduces an experimental version of Batch
that allows use of an array pool for batches, which can especially help reduce (potentially LOH) allocations for very large batch sizes.
New aliases are introduced for the following existing methods because they conflicted with identically named methods introduced in .NET 6.0, but which differ in definition and behaviour:
The superseded methods have been marked obsolete and will most probably be removed in a future version. For more details, see #1018.
In a similar vein, this release also retires the following extension methods that are now part of .NET proper and which have identical names and behaviour:
Append
Batch
Concat
DistinctBy
Prepend
SkipLast
TakeLast
ToHashSet
This helps to prevent ambiguity errors during compilation when System.Linq
and MoreLinq
namespaces are imported together in a file or a namespace. The retirement is done such that the above methods appear as regular static methods rather than extension methods depending on the compilation target. This helps to maintain source as well as binary compatibility. Special thanks to @viceroypenguin for helping with this (see #945 for more details). The upshot is that projects that prefer to import the MoreLinq
namespace rather than individual extensions can simply do so without running into ambiguity compilation errors. However, do bear in mind that this does not prevent future conflicts from appearing should more of MoreLINQ's methods find their way into .NET.
Breaking Changes โ ๏ธ
Since this a major release, some source and binary breaking changes that are listed below were introduced. Please read the details to see if you're affected.
Interleave
shouldn't validateotherSequences
members #1029- Add
Minima
&Maxima
to supersedeMinBy
&MaxBy
#1018 - Remove
Windowed
that's been obsolete since 3.0 #1016 - Remove
Concat
that's been obsolete since 3.0 #993 - Set baseline target to .NET Standard 2.0 #987
- Validate expressions argument to
ToDataTable
cannot be null #802 Subsets(0)
should return an empty set #645Batch
should returnIEnumerable<T[]>
#98
New Contributors ๐๐ฝ
- @pflajszer made their first contribution in #1002
What's Changed ๐๏ธ
- Use docopt.net to parse extensions generator CLI args by @atifaziz in #994
- Remove obsolete
Concat
method by @pflajszer in #1002 - Fix bug in
FillForward
when filler isnull
by @atifaziz in #1006 - Dissolve schema query into distinct
ToDataTable
paths by @atifaziz in #1007 - Hide extensions that conflict with newer .NET versions by @viceroypenguin in #945
- Fix schema binding signature in
ToDataTable
implementation by @atifaziz in #1008 - Re-enable tests for hidden extensions on all targets by @atifaziz in #1009
SortedMerge
: Test do not callMoveNext
eagerly by @Orace in #735- Update package validation tool to v1.0.12 by @atifaziz in #1010
- Suppress
EnableGenerateDocumentationFile
warning as workaround for IDE0005 by @atifaziz in #1013 - Change
Batch
to return arrays by @atifaziz in #1014 - Fix
Subsets
so it returns an empty set when k = 0 by @Orace in #646 - Remove
Windowed
that's superseded byWindow
by @atifaziz in #1017 - Validate
expressions
argument ofToDataTable
by @atifaziz in #1021 - Add
Minima
&Maxima
as successors toMinBy
&MaxBy
by @atifaziz in #1019 - Remove redundant IsExternalInit package by @atifaziz in #1022
- Update all packages to latest versions by @atifaziz in #1023
- List required PolySharp polyfills explicitly by @atifaziz in #1026
- Don't validate content of
otherSequences
argument ofInterleave
by @atifaziz in #1031 - Fix exception thrown when
Pad
/PadStart
width is invalid by @atifaziz in #1030
See Also โน๏ธ
- 4.0.0 milestone for changes in this release
- Commit history since 3.4.2