Skip to content

Commit 836a4fb

Browse files
authored
Merge pull request #314 from fsprojects/ver
🚀 Bump version to 0.6.0 and update docs
2 parents f4c6fb0 + 741b50a commit 836a4fb

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

.github/aw/actions-lock.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"entries": {
3+
"actions/github-script@v8": {
4+
"repo": "actions/github-script",
5+
"version": "v8",
6+
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
7+
},
8+
"github/gh-aw/actions/setup@v0.55.0": {
9+
"repo": "github/gh-aw/actions/setup",
10+
"version": "v0.55.0",
11+
"sha": "e211c855a20aa6cf9297b411466e1c382a8686db"
12+
}
13+
}
14+
}

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
An implementation of [`IAsyncEnumerable<'T>`][3] as a computation expression: `taskSeq { ... }` with an accompanying `TaskSeq` module and functions, that allow seamless use of asynchronous sequences similar to F#'s native `seq` and `task` CE's.
88

9-
* Latest stable version: [0.4.0 is on NuGet][nuget].
9+
* Latest stable version is [on NuGet][nuget].
1010

1111
## Release notes<!-- omit in toc -->
1212

@@ -170,15 +170,15 @@ let feedFromTwitter user pwd = taskSeq {
170170

171171
## Choosing between `AsyncSeq` and `TaskSeq`
172172

173-
The [`AsyncSeq`][11] and `TaskSeq` libraries both operate on asynchronous sequences, but there are a few fundamental differences. The most notable being that the former _does not_ implement `IAsyncEnumerable<'T>`, though it does have a type of that name with different semantics (not surprising; it predates the definition of the modern one). Another key difference is that `TaskSeq` uses `ValueTask`s for the asynchronous computations, whereas `AsyncSeq` uses F#'s `Async<'T>`.
173+
The [`AsyncSeq`][11] and `TaskSeq` libraries both operate on asynchronous sequences, but there are a few fundamental differences. The most notable being that `TaskSeq` uses `ValueTask`s and state machines for asynchronous computations with much lower overhead, whereas `AsyncSeq` uses F#'s `Async<'T>`.
174174

175175
There are more differences:
176176

177177
| | `TaskSeq` | `AsyncSeq` |
178178
|----------------------------|---------------------------------------------------------------------------------|----------------------------------------------------------------------|
179179
| **Frameworks** | .NET 5.0+, NetStandard 2.1 | .NET 5.0+, NetStandard 2.0 and 2.1, .NET Framework 4.6.1+ |
180180
| **F# concept of** | `task` | `async` |
181-
| **Underlying type** | [`Generic.IAsyncEnumerable<'T>`][3] <sup>[note #1](#tsnote1 "Full name System.Collections.Generic.IAsyncEnumerable&lt;'T>.")</sup>| Its own type, also called `IAsyncEnumerable<'T>`<sup>[note #1](#tsnote1 "Full name FSharp.Control.IAsyncEnumerable&lt;'T>.")</sup> |
181+
| **Underlying type** | [`IAsyncEnumerable<'T>`][3] <sup>[note #1](#tsnote1 "Full name System.Collections.Generic.IAsyncEnumerable&lt;'T>.")</sup>| Its own type, also called `IAsyncEnumerable<'T>`<sup>[note #1](#tsnote1 "Full name System.Collections.Generic.IAsyncEnumerable&lt;'T>.")</sup> |
182182
| **Implementation** | State machine (statically compiled) | No state machine, continuation style |
183183
| **Semantics** | `seq`-like: on-demand | `seq`-like: on-demand |
184184
| **Disposability** | Asynchronous, through [`IAsyncDisposable`][7] | Synchronous, through `IDisposable` |
@@ -195,7 +195,7 @@ There are more differences:
195195
| **[`Current`][5]** | [Returns `'T`][5] | n/a |
196196
| **Cancellation** | See [#133][], until 0.3.0: use `GetAsyncEnumerator(cancelToken)` | Implicit token flows to all subtasks per `async` semantics |
197197
| **Performance** | Very high, negligible allocations | Slower, more allocations, due to using `async` and cont style |
198-
| **Parallelism** | Unclear, interface is meant for _sequential/async_ processing | Supported by extension functions |
198+
| **Parallelism** | Interface is meant for _sequential/async_ processing | Supported by extension functions |
199199

200200
<sup>¹⁾ <a id="tsnote1"></a>_Both `AsyncSeq` and `TaskSeq` use a type called `IAsyncEnumerable<'T>`, but only `TaskSeq` uses the type from the BCL Generic Collections. `AsyncSeq` supports .NET Framework 4.6.x and NetStandard 2.0 as well, which do not have this type in the BCL._</sup>
201201

Version.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
33
<!-- updating this version will trigger a publish after merge to 'main' -->
4-
<Version>0.4.0</Version>
4+
<Version>0.6.0</Version>
55
</PropertyGroup>
66
</Project>

0 commit comments

Comments
 (0)