Version 0.4.0, 17 Mar, 2024
This is a long term stable NuGet release, with some major features added.
Summary of changes:
Changes implemented by @abelbraaksma unless otherwise noted.
Special thanks for this release goes to Ruben Bartelink (@bartelink) for tirelessly reviewing all PRs, proofreading and fixing a lot of documentation, and providing valuable insight into several complex use cases.
Bug fixes
- #220, #234 Fix bug: several documentation errors (by @bartelink)
- #198 Fix bug: NU1605 (package downgrade warnings in test env)
- TBD (will fill these in in the coming days, or see changelog below)
Features
- #136, #216 Full rewrite of all XML doc / tooltip / param info documentation of the public surface area
- #135 Performance improvement by preferring
StartImmediateAsTask
overStartAsTask
- #227 Prefer
IDisposable
overIAsyncDisposable
in internal seq-cache code (by @bartelink) - #235 Improve performance of
takeWhileXXX
andskipWhileXXX
functions (in coop with @bartelink) - #193 Deprecate some utility functions (see below)
- #193 Deprecate
taskSeq<_>
in favor of typeTaskSeq<_>
for parity withAsyncSeq<_>
and naming guidelines (the CE remainstaskSeq
) - #184 Make
module TaskSeq
->type TaskSeq
(static class) to allow overloads (see below) - #208 (overview); #209, #217, #219, #221, #235, #236, #237, #240, #130 Add functions to
TaskSeq
module:- Add
concat
(for array) - Add
concat
(for list) - Add
concat
(for resizearray) - Add
concat
(for seq) - Add
forall
- Add
forallAsync
- Add
insertAt
- Add
insertManyAt
- Add
max
- Add
maxBy
- Add
maxByAsync
- Add
min
- Add
minBy
- Add
minByAsync
- Add
removeAt
- Add
removeManyAt
- Add
skip
- Add
skipWhile
- Add
skipWhileAsync
- Add
skipWhileInclusive
- Add
skipWhileInclusiveAsync
- Add
take
- Add
truncate
- Add
updateAt
- Add
where
- Add
whereAsync
- Add
Other
- Update readme to contain complete list of available functionality
- #211 Fancier badge (by @bartelink)
- Dependency updates (with @dependabot)
- 99.5% test coverage of all exposed functions and types
Upgrade guide (compatibility)
The changes in this version may raise deprecation warnings. All function and type renames have kept the old name around, but with a deprecation warning when you use it.
To get rid of those warnings, follow instructions shown in the warnings:
- Rename any type annotation
taskSeq<'T>
toTaskSeq<'T>
- Rename any
ValueTask.ofIValueTaskSource
->ValueTask.ofSource
- Rename any
ValueTask.FromResult
->ValueTask.fromResult
Binary incompatibility
The change from module to static class for TaskSeq
has no effect on existing code, however it is a binary incompatibility. This means that you cannot replace an existing FSharp.Control.TaskSeq.dll
of a previous version, with one of v0.4.0 or higher. You must recompile, or you may get "member not found" exceptions.