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:
AppendBatchConcatDistinctByPrependSkipLastTakeLastToHashSet
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.
Interleaveshouldn't validateotherSequencesmembers https://github.com/morelinq/MoreLINQ/issues/1029- Add
Minima&Maximato supersedeMinBy&MaxByhttps://github.com/morelinq/MoreLINQ/issues/1018 - Remove
Windowedthat's been obsolete since 3.0 https://github.com/morelinq/MoreLINQ/issues/1016 - Remove
Concatthat's been obsolete since 3.0 https://github.com/morelinq/MoreLINQ/issues/993 - Set baseline target to .NET Standard 2.0 https://github.com/morelinq/MoreLINQ/issues/987
- Validate expressions argument to
ToDataTablecannot be null https://github.com/morelinq/MoreLINQ/issues/802 Subsets(0)should return an empty set https://github.com/morelinq/MoreLINQ/issues/645Batchshould returnIEnumerable<T[]>https://github.com/morelinq/MoreLINQ/issues/98
New Contributors 👋🏽
- @pflajszer made their first contribution in https://github.com/morelinq/MoreLINQ/pull/1002
What's Changed 🗒️
- Use docopt.net to parse extensions generator CLI args by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/994
- Remove obsolete
Concatmethod by @pflajszer in https://github.com/morelinq/MoreLINQ/pull/1002 - Fix bug in
FillForwardwhen filler isnullby @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1006 - Dissolve schema query into distinct
ToDataTablepaths by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1007 - Hide extensions that conflict with newer .NET versions by @viceroypenguin in https://github.com/morelinq/MoreLINQ/pull/945
- Fix schema binding signature in
ToDataTableimplementation by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1008 - Re-enable tests for hidden extensions on all targets by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1009
SortedMerge: Test do not callMoveNexteagerly by @Orace in https://github.com/morelinq/MoreLINQ/pull/735- Update package validation tool to v1.0.12 by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1010
- Suppress
EnableGenerateDocumentationFilewarning as workaround for IDE0005 by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1013 - Change
Batchto return arrays by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1014 - Fix
Subsetsso it returns an empty set when k = 0 by @Orace in https://github.com/morelinq/MoreLINQ/pull/646 - Remove
Windowedthat's superseded byWindowby @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1017 - Validate
expressionsargument ofToDataTableby @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1021 - Add
Minima&Maximaas successors toMinBy&MaxByby @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1019 - Remove redundant IsExternalInit package by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1022
- Update all packages to latest versions by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1023
- List required PolySharp polyfills explicitly by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1026
- Don't validate content of
otherSequencesargument ofInterleaveby @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1031 - Fix exception thrown when
Pad/PadStartwidth is invalid by @atifaziz in https://github.com/morelinq/MoreLINQ/pull/1030
See Also ℹ️
- 4.0.0 milestone for changes in this release
- Commit history since 3.4.2