Skip to content

TaskSeq 0.4.0

Latest
Compare
Choose a tag to compare
@abelbraaksma abelbraaksma released this 18 Mar 02:51
· 27 commits to main since this release

Nuget

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 over StartAsTask
  • #227 Prefer IDisposable over IAsyncDisposable in internal seq-cache code (by @bartelink)
  • #235 Improve performance of takeWhileXXX and skipWhileXXX functions (in coop with @bartelink)
  • #193 Deprecate some utility functions (see below)
  • #193 Deprecate taskSeq<_> in favor of type TaskSeq<_> for parity with AsyncSeq<_> and naming guidelines (the CE remains taskSeq)
  • #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

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> to TaskSeq<'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.

Changelog