Skip to content

Initial release 0.1.0

Compare
Choose a tag to compare
@abelbraaksma abelbraaksma released this 18 Mar 02:39
· 350 commits to main since this release

Nuget

Version 0.1.0, 4 Nov, 2022

This very first release features a fully functional taskSeq { .... } computation expression and a decent surface area coverage of module functions. All relevant issues and PR's are listed as part of milestone v0.1.0.

Summary of changes

Changes implemented by @abelbraaksma unless otherwise noted.

Bugs fixed

  • #25 Fix bug: empty task sequences may have race conditions and run forever
  • #39 Fix bug: multiple iterations over some task seqs can lead to InvalidOperationException
  • #65 Fix bug: prevent MoveNext when not necessary in TaskSeq.item / tryItem
  • #49 Fix bug: state machine resumption back to zero after reset (by @dsyme)

Features added

  • #72 Put everything in namespace FSharp.Control (per @dsyme's suggestions)
  • #2, #51 etc CE taskSeq { ... } using resumable code (based on original ideas by @dsyme, @gusty and @rspeele, see tasks.fs):
    • Support Bind, for taskSeq { let! foo = someTask() }
    • Support For, While for taskSeq { for current in someTaskSeq do ... }
    • Support Yield for taskSeq { yield "hello world" }
    • Support YieldFrom for taskSeq { yield! anotherTaskSeq } with overload for normal sequences
    • Support Using for taskSeq { use ... } and taskSeq { use! ... }
    • Support TryFinally and TryWith for taskSeq { try .. with | try .. finally }
    • Support Zero for taskSeq { do () }
    • Support Combine for supporting multiple let!
  • #59 Drop ReturnFrom from taskSeq computation expression
  • #34 Consistent naming style as F# Seq functions
  • #2, #18, #20, #23, #31, #53, #67, #68, #69, #70 and issues #22, #38 Add functions to TaskSeq module:
    • Add box
    • Add cast
    • Add choose, chooseAsync
    • Add collect, collectAsync
    • Add collectSeq, collectSeqAsync
    • Add concat
    • Add contains
    • Add empty<_>
    • Add exactlyOne
    • Add exists, existsAsync
    • Add filter, filterAsync
    • Add find, findAsync
    • Add findIndex, findIndexAsync
    • Add fold, foldAsync
    • Add head
    • Add indexed
    • Add init, initAsync
    • Add initInfinite, initInfiniteAsync
    • Add isEmpty
    • Add item
    • Add iter, iterAsync`
    • Add iteri, iteriAsync
    • Add last
    • Add length
    • Add lengthBy, lengthByAsync
    • Add lengthOrMax
    • Add map, mapAsync
    • Add mapi, mapiAsync
    • Add ofArray
    • Add ofAsyncArray
    • Add ofAsyncList
    • Add ofAsyncSeq
    • Add ofList
    • Add ofResizeArray
    • Add ofSeq
    • Add ofTaskArray
    • Add ofTaskList
    • Add ofTaskSeq
    • Add pick, pickAsync
    • Add toArray
    • Add toArrayAsync
    • Add toIListAsync
    • Add toList
    • Add toListAsync
    • Add toResizeArrayAsync
    • Add toSeqCachedAsync
    • Add tryExactlyOne
    • Add tryFind, tryFindAsync
    • Add tryFindIndex, tryFindIndexAsync
    • Add tryHead
    • Add tryItem
    • Add tryLast
    • Add tryPick, tryPickAsync
    • Add unbox
    • Add zip

Changelog