-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathrelease-notes.txt
More file actions
128 lines (110 loc) · 7.52 KB
/
release-notes.txt
File metadata and controls
128 lines (110 loc) · 7.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Release notes:
Unreleased
1.1.1
- perf: use while! in groupBy, countBy, partition, except, exceptOfSeq to eliminate redundant mutable 'go' variables and initial MoveNextAsync calls
1.1.0
- adds TaskSeq.chooseV, TaskSeq.chooseVAsync, #385
1.0.0
- adds taskSeqDynamic computation expression and TaskSeqDynamic/TaskSeqDynamicInfo types for dynamic (FSI-compatible) resumable code, fixing issue where taskSeq would raise NotImplementedException in F# Interactive, #246
- perf: simplify iter, fold, reduce, mapFold, tryLast, skipOrTake (Drop/Truncate) to use while! and remove manual go-flag and initial MoveNextAsync pre-advance, matching the pattern already used by sum/sumBy/average
- perf: toResizeArrayAsync (and therefore toArrayAsync, toListAsync, toResizeArrayAsync, toIListAsync) uses a direct loop instead of going through iter, avoiding a lambda and DU allocation per call
- perf: tryItem uses a simpler loop that skips the redundant inner index check on every iteration
- perf: TaskSeq.chunkBy and chunkByAsync reuse the ResizeArray buffer between chunks, reducing allocations on sequences with many chunk boundaries
- fixes: TaskSeq.insertAt, insertManyAt, removeAt, removeManyAt, updateAt now raise ArgumentNullException (not NullReferenceException) when given a null source; insertManyAt also validates the values argument
- refactor: simplify lengthBy and lengthBeforeMax to use while! and remove the redundant mutable 'go' and initial MoveNextAsync
- refactor: simplify tryTail inner loop to use while!, removing redundant mutable 'go' flag and initial MoveNextAsync
- adds TaskSeq.distinctUntilChangedWith and TaskSeq.distinctUntilChangedWithAsync, #345
- adds TaskSeq.replicateInfinite, replicateInfiniteAsync, replicateUntilNoneAsync, #345
- adds TaskSeq.firstOrDefault, lastOrDefault, #345
- adds TaskSeq.splitAt, #345
- adds TaskSeq.zipWith, zipWithAsync, zipWith3, zipWithAsync3, #345
- adds TaskSeq.chunkBy, chunkByAsync, #345
- adds TaskSeq.threadState, threadStateAsync, #345
- adds docs/ with fsdocs-based documentation site covering generating, transforming, consuming, combining and advanced operations
- docs: adds missing XML <returns> documentation tags to singleton, isEmpty, length, lengthOrMax, lengthBy, and lengthByAsync
- test: adds 70 new tests to TaskSeq.Fold.Tests.fs covering call-count assertions, folder-not-called-on-empty, ordering, null initial state, and fold/foldAsync equivalence
1.0.0
- adds TaskSeq.withCancellation, #167
0.7.0
- performance: TaskSeq.exists, existsAsync, contains no longer allocate an intermediate Option value
- test: adds 67 tests for TaskSeq.lengthOrMax (previously untested)
- adds TaskSeq.mapFold and TaskSeq.mapFoldAsync
- adds TaskSeq.sum, sumBy, sumByAsync, average, averageBy, averageByAsync
- adds TaskSeq.reduce and TaskSeq.reduceAsync, #289
- adds TaskSeq.unfold and TaskSeq.unfoldAsync, #289
- adds TaskSeq.chunkBySize (closes #258) and TaskSeq.windowed, #289
- fixes: CancellationToken passed to GetAsyncEnumerator is now honored in MoveNextAsync, #179
0.6.0
- fixes: async { for item in taskSeq do ... } no longer wraps exceptions in AggregateException, #129
- eng: enable PackageValidationBaselineVersion=0.4.0 to enforce binary compatibility with last published release
- adds TaskSeq.compareWith and TaskSeq.compareWithAsync
- adds TaskSeq.scan and TaskSeq.scanAsync, #289
- adds TaskSeq.pairwise, #289
- adds TaskSeq.groupBy and TaskSeq.groupByAsync, #289
- adds TaskSeq.countBy and TaskSeq.countByAsync, #289
- adds TaskSeq.partition and TaskSeq.partitionAsync, #289
- adds TaskSeq.reduce and TaskSeq.reduceAsync, #289
- adds TaskSeq.unfold and TaskSeq.unfoldAsync, #289
- adds TaskSeq.distinct, TaskSeq.distinctBy, TaskSeq.distinctByAsync
0.5.0
- update engineering to .NET 9/10
0.4.0
- overhaul all doc comments, add exceptions, improve IDE quick-info experience, #136, #220, #234
- new surface area functions, fixes #208:
* TaskSeq.take, skip, #209
* TaskSeq.truncate, drop, #209
* TaskSeq.where, whereAsync, #217
* TaskSeq.skipWhile, skipWhileInclusive, skipWhileAsync, skipWhileInclusiveAsync, #219
* TaskSeq.max, min, maxBy, minBy, maxByAsync, minByAsync, #221
* TaskSeq.insertAt, insertManyAt, removeAt, removeManyAt, updateAt, #236
* TaskSeq.forall, forallAsync, #240
* TaskSeq.concat (overloads: seq, array, resizearray, list), #237
- Performance: less thread hops with 'StartImmediateAsTask' instead of 'StartAsTask', fixes #135
- Performance: several inline and allocation improvements
- BINARY INCOMPATIBILITY: 'TaskSeq' module replaced by static members on 'TaskSeq<_>', fixes #184
- DEPRECATIONS (warning FS0044):
- type 'taskSeq<_>' is renamed to 'TaskSeq<_>', fixes #193
- function 'ValueTask.ofIValueTaskSource` renamed to `ValueTask.ofSource`, fixes #193
- function `ValueTask.FromResult` is renamed to `ValueTask.fromResult`, fixes #193
0.4.0-alpha.1
- bugfix: not calling Dispose for 'use!', 'use', or `finally` blocks #157 (by @bartelink)
- BREAKING CHANGE: null args now raise ArgumentNullException instead of NullReferenceException, #127
- adds `let!` and `do!` support for F#'s Async<'T>, #79, #114
- adds TaskSeq.takeWhile, takeWhileAsync, takeWhileInclusive, takeWhileInclusiveAsync, #126 (by @bartelink)
- adds AsyncSeq vs TaskSeq comparison chart, #131
- bugfix: removes release-notes.txt from file dependencies, but keep in the package, #138
0.3.0
- improved xml doc comments, signature files for exposing types, fixes #112.
- adds support for static TaskLike, allowing the same let! and do! overloads that F# task supports, fixes #110.
- implements 'do!' for non-generic Task like with Task.Delay, fixes #43.
- task and async CEs extended with support for 'for .. in ..do' with TaskSeq, #75, #93, #99 (in part by @theangrybyrd).
- adds TaskSeq.singleton, #90 (by @gusty).
- bugfix: fixes overload resolution bug with 'use' and 'use!', #97 (thanks @peterfaria).
- improves TaskSeq.empty by not relying on resumable state, #89 (by @gusty).
- bugfix: does not throw exceptions anymore for unequal lengths in TaskSeq.zip, fixes #32.
- BACKWARD INCOMPATIBILITY: several internal-only types now hidden
0.2.2
- removes TaskSeq.toSeqCachedAsync, which was incorrectly named. Use toSeq or toListAsync instead.
- renames TaskSeq.toSeqCached to TaskSeq.toSeq, which was its actual operational behavior.
0.2.1
- fixes an issue with ValueTask on completed iterations.
- adds `TaskSeq.except` and `TaskSeq.exceptOfSeq` async set operations.
0.2
- moved from NET 6.0, to NetStandard 2.1 for greater compatibility, no functional changes.
- move to minimally necessary FSharp.Core version: 6.0.2.
- updated readme with progress overview, corrected meta info, added release notes.
0.1.1
- updated meta info in nuget package and added readme.
0.1
- initial release
- implements taskSeq CE using resumable state machines
- with support for: yield, yield!, let, let!, while, for, try-with, try-finally, use, use!
- and: tasks and valuetasks
- adds toXXX / ofXXX functions
- adds map/mapi/fold/iter/iteri/collect etc with async variants
- adds find/pick/choose/filter etc with async variants and 'try' variants
- adds cast/concat/append/prepend/delay/exactlyOne
- adds empty/isEmpty
- adds findIndex/indexed/init/initInfinite
- adds head/last/tryHead/tryLast/tail/tryTail
- adds zip/length