Releases: morelinq/MoreLINQ
4.4.0
What's New 📣
- Generic versions of
Sequencefor any number type by @atifaziz in #893:public static IEnumerable<T> Sequence<T>(T start) where T : INumber<T>, IMinMaxValue<T> public static IEnumerable<T> Sequence<T>(T start, T stop) where T : INumber<T> public static IEnumerable<T> Sequence<T>(T start, T stop, T step) where T : INumber<T>
SkipLastWhileextension by @ArmoryNode in #1085
What's Changed 🗒️
- Update all tools to their latest versions by @atifaziz in #1076
- Drop CI build matrix & testing on macOS images by @atifaziz in #1078
- Drop conditional testing on Mono by @atifaziz in #1081
- Simplify internal implementation details of
EndsWithby @atifaziz in #1082 - Fix NUnit warnings NUnit1029 & NUnit1030 by @atifaziz in #1088
- Update NUnit packages to their latest versions by @atifaziz in #1089
- Use collection expressions in tests by @atifaziz in #1090
- Update .NET SDK to 9, including dependencies by @atifaziz in #1091
- Hide
CountByin .NET 9+ by @atifaziz in #1092 - Allow use of C# 13 by @atifaziz in #1094
New Contributors 👋🏽
- @ArmoryNode made their first contribution in #1085
See Also ℹ️
- 4.4.0 milestone for changes in this release
- Commit history since 4.3.0
4.3.0
This is a maintenance release that introduces no new APIs.
What's New 📣
What's Changed 🗒️
- Removed closures in favour of private static methods to close issue #906 by @JacobSilasBentley in #1064
- Update NuGet package validation tool to latest version by @atifaziz in #1068
- Remove testing against .NET 7 (near end-of-life) by @atifaziz in #1067
- Pin to .NET SDK 8.0.2xx by @atifaziz in #1069
New Contributors 👋🏽
- @JacobSilasBentley made their first contribution in #1064
See Also ℹ️
- 4.3.0 milestone for changes in this release
- Commit history since 4.2.0
4.2.0
This is a bug fix and maintenance release.
What's Changed 🗒️
- Preparation for next release (4.2) by @atifaziz in #1055
- Add GitHub Action workflow for building by @atifaziz in #1058
- Update Ubuntu image on CI to use 18.04 by @atifaziz in #1057
- Fix pending tasks wait loop in async streams
Mergeby @atifaziz in #1059 🪲 - Fix style errors: IDE0028, IDE0290, IDE0300 & IDE0301 by @atifaziz in #1062
- Update packages to their latest versions by @atifaziz in #1063
See Also ℹ️
- 4.2.0 milestone for changes in this release
- Commit history since 4.1.0
4.1.0
What's New 📣
Duplicates- .NET 8 usability (see #1040)
New Contributors 👋🏽
- @julienasp made their first contribution in #1037
What's Changed 🗒️
- Update shipped API per v4.0 by @atifaziz in #1034
- Update test packages to latest versions by @atifaziz in #1035
- Set package validation baseline to version 4.0 by @atifaziz in #1042
- Use .NET 8 SDK to add .NET 8 target by @atifaziz in #1041
- Update to using C# 12 by @atifaziz in #1046
- Address
Subsetsto-do about clearer members names by @atifaziz in #1048 - Refactor
RandomSubsetinternals for DRY, removing closure by @viceroypenguin in #1049 - Set simple field naming rules with
thisqualifier by @atifaziz in #1050 - Introduce
Duplicatesextension by @julienasp in #1037 - Hide
ToDictionary()in net8+ by @viceroypenguin in #1040 - Use
EqualityComparer<T>.Createfrom .NET 8 by @atifaziz in #1051 - Refactor
Subsetscore into an iterator method by @atifaziz in #1052 - Update shipped API for v4.1 by @atifaziz in #1053
- Refactor
Permutationsinto an iterator method by @atifaziz in #1054
See Also ℹ️
- 4.1.0 milestone for changes in this release
- Commit history since 4.0.0
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 #1029- Add
Minima&Maximato supersedeMinBy&MaxBy#1018 - Remove
Windowedthat's been obsolete since 3.0 #1016 - Remove
Concatthat's been obsolete since 3.0 #993 - Set baseline target to .NET Standard 2.0 #987
- Validate expressions argument to
ToDataTablecannot be null #802 Subsets(0)should return an empty set #645Batchshould 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
Concatmethod by @pflajszer in #1002 - Fix bug in
FillForwardwhen filler isnullby @atifaziz in #1006 - Dissolve schema query into distinct
ToDataTablepaths by @atifaziz in #1007 - Hide extensions that conflict with newer .NET versions by @viceroypenguin in #945
- Fix schema binding signature in
ToDataTableimplementation by @atifaziz in #1008 - Re-enable tests for hidden extensions on all targets by @atifaziz in #1009
SortedMerge: Test do not callMoveNexteagerly by @Orace in #735- Update package validation tool to v1.0.12 by @atifaziz in #1010
- Suppress
EnableGenerateDocumentationFilewarning as workaround for IDE0005 by @atifaziz in #1013 - Change
Batchto return arrays by @atifaziz in #1014 - Fix
Subsetsso it returns an empty set when k = 0 by @Orace in #646 - Remove
Windowedthat's superseded byWindowby @atifaziz in #1017 - Validate
expressionsargument ofToDataTableby @atifaziz in #1021 - Add
Minima&Maximaas successors toMinBy&MaxByby @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
otherSequencesargument ofInterleaveby @atifaziz in #1031 - Fix exception thrown when
Pad/PadStartwidth is invalid by @atifaziz in #1030
See Also ℹ️
- 4.0.0 milestone for changes in this release
- Commit history since 3.4.2
3.4.2
This is a bug fix and maintenance release.
What's Changed 🗒️
See Also ℹ️
- 3.4.2 milestone for changes in this release
- Commit history since 3.4.2
3.4.1
This is a bug fix and maintenance release.
What's Changed 🗒️
- Enable nullable context for extensions generated via T4 by @atifaziz in #982 🪲
- Fix
Permutationsfor when source length is >12 by @atifaziz in #979 🪲 - Add public API tracking by @atifaziz in #980
- Use raw strings for quoted code in extensions generator by @atifaziz in #983
See Also ℹ️
- 3.4.1 milestone for changes in this release
- Commit history since 3.4.0
3.4.0
What's New 📣
This release notably adds nullable reference type annotations (see #582 and #803), the two experimental operators below and fixes a few bugs:
Merge(experimental)Batchoverloads using an array pool (experimental)
Breaking Changes ⚠️
While there are no breaking API changes in this release, the following changes will affect users using on .NET versions that have reached end-of-life:
- Use .NET 6 SDK while dropping .NET 5 & Core 2.1 by @atifaziz in #843
- Updated .NET Framework target to 4.6.2 by @atifaziz in #934
See Also ℹ️
- 3.4.0 milestone for changes in this release
- Commit history since 3.3.2
New Contributors 👋🏽
- @TAGC made their first contribution in #772
- @MarcDirven made their first contribution in #796
- @sid-6581 made their first contribution in #808
- @GitHubPang made their first contribution in #828
- @MateoMiller made their first contribution in #846
- @viceroypenguin made their first contribution in #888
- @leotsarev made their first contribution in #907
- @i3arnon made their first contribution in #959
What's Changed 🗒️
OrderedMerge: add tests by @Orace in #736- Replace explicit type mentions with object pattern by @atifaziz in #751
- Optimize Batch for empty
IReadOnlyCollection<T>too by @leandromoh in #750 - Update to .NET Core SDK 3.1 by @atifaziz in #754
- Update .NET Core installation script by @atifaziz in #756
Interleave: Do not callGetEnumeratoreagerly by @Orace in #730- Fix (bash) test script to test against .NET Core 3.1 by @atifaziz in #757
- Update all test dependencies by @atifaziz in #755
- Deploy package only on CI build of "deploy" by @atifaziz in #758
- Fix bug in
LastOrDefaultfor extrema sequence by @atifaziz in #761 - Annotate nullability of reference types by @atifaziz in #582 ⭐
- Fix return value docs for
MinBy/MaxByby @atifaziz in #765 - Fix .NET Core version in test script by @atifaziz in #767
- Update to .NET 5.0 SDK by @atifaziz in #766
- Fix duplicate test runs on Windows by @atifaziz in #769
- Fix typo in Partition return value documentation by @TAGC in #772
- Integrate templated code generation into project file by @atifaziz in #776
- Add .NET 5.0 as a test target by @atifaziz in #777
- Disable parallel building due to T4 for simplicity by @atifaziz in #779
- Unify to single CI platform by @atifaziz in #778
- Enable use of C# 9 across all projects by @atifaziz in #780
- Mask
System.Linqfor async streams by @atifaziz in #781 - Fix XML encoding of ">" in project file by @atifaziz in #785
- Simpler extensions generator with namespace & program class by @atifaziz in #787
- Replace using statements with declarations in tests by @atifaziz in #786
- Update test project dependencies to latest versions by @atifaziz in #790
- Fix grep invocation on Windows CI build by @atifaziz in #791
- Use consistent line-folding in CI YAML shell sections by @atifaziz in #792
- Doc update (+ instead of /) by @MarcDirven in #796
- Fix dictionary bug when null key has null value by @atifaziz in #800
- Fix
TrySinglesignature with honest nullable annotations by @atifaziz in #801 - Cleanup ! operator usage in
FallbackIfEmptyby @sid-6581 in #808 - Fix
Pad*signatures with more honest nullable annotations by @atifaziz in #804 - Fix
Lag&Leadsignatures with more honest nullable annotations by @atifaziz in #805 - Fix
ReverseComparersignature with more honest nullable annotations by @sid-6581 in #807 - Fix
GroupAdjacentnull key handling bug by @atifaziz in #810 - Fix
FullGroupJoinsignature with more honest nullable annotations by @sid-6581 in #806 - Add test to ensure
Batchdoes not reuse internal array by @leandromoh in #820 - Update links in
READMEby @GitHubPang in #828 - Use .NET 6 SDK while dropping .NET 5 & Core 2.1 by @atifaziz in #843
- Removed unnecessary
nullcheck inBatchmethod by @MateoMiller in #846 - Fix code coverage with new collector by @atifaziz in #845
- Update referenced packages to latest versions by @atifaziz in #844
- Fix
Flattensignature parts to be null-oblivious by @atifaziz in #847 - Add missing remarks tags on
Batchoverload by @atifaziz in #849 - Constrain key type param in
ToDictionarytonotnullby @atifaziz in #852 - Allow use of C# 10 by @atifaziz in #853
- Remove look-up optimizations in
CountBy/ScanByby @atifaziz in #855 - Replace Nullable with PolySharp by @atifaziz in #857
- Fix code coverage using latest coverlet collector by @atifaziz in #858
- Adjust library for .NET 6 target by @atifaziz in #860
- Use end index "[^1]" by @atifaziz in #862
- Use string interpolation by @atifaziz in #863
- Discard unused parameters by @atifaziz in #864
- Rewrite switch statements as expressions by @atifaziz in #865
- Use
+=to increment by @atifaziz in #869 - Convert using statements to declarations by @atifaziz in #867
- Revise & take advantage of pattern matching by @atifaziz in #866
- Rewrite swap more succinctly (via tuples) by @atifaziz in #868
- Simplify names (IDE0001) by @atifaziz in #861
- Make PolySharp a build-time dependency by @jnyrup in #870
- Update to .NET 7 by @atifaziz in #871
- Fix test scripts to test on .NET 7 runtime by @atifaziz in #873
- Allow use of C# 11 by @atifaziz in #874
- Replace
MayBeNullwith?inIExtremaEnumerablemembers by @atifaziz in #872 - Enable nullable context in
Flattentests by @atifaziz in #875 - Update ReportGenerator tool to 5.1.11 by @atifaziz in #876
- Enable nullable context for extensions generator by @atifaziz in #878
- Sync
Lookup+Groupingfrom .NET 7 sources by @atifaziz in #879 Batchoverloads using an array pool by @atifaziz in #856- PartialSort:
#nullableenable on tests by @viceroypenguin in #888 - Fix nullability annotation in
Subjectby @atifaziz in #891 - Replace null...
3.3.2
This is a minor bug fix release that primarily addresses a regression with Batch that was introduced in version 3.3.1.
See Also
- 3.3.2 milestone for changes in this release
- Commit history since 3.3.1
3.3.1
What's New 📢
And lots of bug fixes. 🐛
See Also
- 3.3.1 milestone for changes in this release
- Commit history since 3.2.0
- API delta since 3.2.0