Skip to content

Commit 1eda704

Browse files
authored
Merge AsyncRx.NET assemblies (#1896)
* Merge AsyncRx.NET assemblies (System.Reactive.Async.Concurrency, System.Reactive.Async.Core, System.Reactive.Async.Disposables, System.Reactive.Interfaces, System.Reactive.Async.Linq and System.Reactive.Async.Bcl all merged into System.Reactive.Async) * Add AsyncRx.NET package unification ADR * Replace System.Reactive.Shared with Rx dependency (and rename a couple of types due to resulting clashes, and add extension method to replace the one feature of `Notification<T>` that was in this library and not Rx) * Fixed erroneous paths for all the .tt files)
1 parent 47d0f79 commit 1eda704

File tree

224 files changed

+403
-1760
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

224 files changed

+403
-1760
lines changed

AsyncRx.NET/ApiCompare/ApiCompare.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="System.Reactive" Version="5.0.0" />
13+
<PackageReference Include="System.Reactive" Version="6.0.0-preview.1" />
1414
</ItemGroup>
1515

1616
<ItemGroup>

AsyncRx.NET/AsyncRx.NET.sln

Lines changed: 2 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.26730.3
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.5.33424.131
55
MinimumVisualStudioVersion = 15.0.26124.0
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{1D64A210-F73A-4F91-9598-4C51865D105D}"
77
EndProject
@@ -13,22 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Playground", "Playground\Pl
1313
EndProject
1414
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApiCompare", "ApiCompare\ApiCompare.csproj", "{84F35A01-ECC4-4635-B702-77F6B18FD54C}"
1515
EndProject
16-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Shared", "System.Reactive.Shared\System.Reactive.Shared.csproj", "{09F10630-405B-4270-9AB6-0AB8F2EE6621}"
17-
EndProject
18-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Concurrency", "System.Reactive.Async.Concurrency\System.Reactive.Async.Concurrency.csproj", "{2794CB27-C6A2-4156-A919-C033A9EE474E}"
19-
EndProject
20-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Disposables", "System.Reactive.Async.Disposables\System.Reactive.Async.Disposables.csproj", "{CE5036FE-9B94-40CC-8084-26ACE74D806A}"
21-
EndProject
22-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Interfaces", "System.Reactive.Async.Interfaces\System.Reactive.Async.Interfaces.csproj", "{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}"
23-
EndProject
24-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Subjects", "System.Reactive.Async.Subjects\System.Reactive.Async.Subjects.csproj", "{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}"
25-
EndProject
26-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Linq", "System.Reactive.Async.Linq\System.Reactive.Async.Linq.csproj", "{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}"
27-
EndProject
28-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Bcl", "System.Reactive.Bcl\System.Reactive.Bcl.csproj", "{B709ED34-B782-4617-AE83-C0170A2EEE19}"
29-
EndProject
30-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Reactive.Async.Core", "System.Reactive.Async.Core\System.Reactive.Async.Core.csproj", "{9D2E636E-1C4D-4130-908D-4174B6D7AC71}"
31-
EndProject
3216
Global
3317
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3418
Debug|Any CPU = Debug|Any CPU
@@ -75,102 +59,6 @@ Global
7559
{84F35A01-ECC4-4635-B702-77F6B18FD54C}.Release|x64.Build.0 = Release|Any CPU
7660
{84F35A01-ECC4-4635-B702-77F6B18FD54C}.Release|x86.ActiveCfg = Release|Any CPU
7761
{84F35A01-ECC4-4635-B702-77F6B18FD54C}.Release|x86.Build.0 = Release|Any CPU
78-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
79-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|Any CPU.Build.0 = Debug|Any CPU
80-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|x64.ActiveCfg = Debug|Any CPU
81-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|x64.Build.0 = Debug|Any CPU
82-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|x86.ActiveCfg = Debug|Any CPU
83-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Debug|x86.Build.0 = Debug|Any CPU
84-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|Any CPU.ActiveCfg = Release|Any CPU
85-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|Any CPU.Build.0 = Release|Any CPU
86-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|x64.ActiveCfg = Release|Any CPU
87-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|x64.Build.0 = Release|Any CPU
88-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|x86.ActiveCfg = Release|Any CPU
89-
{09F10630-405B-4270-9AB6-0AB8F2EE6621}.Release|x86.Build.0 = Release|Any CPU
90-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
91-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|Any CPU.Build.0 = Debug|Any CPU
92-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|x64.ActiveCfg = Debug|Any CPU
93-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|x64.Build.0 = Debug|Any CPU
94-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|x86.ActiveCfg = Debug|Any CPU
95-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Debug|x86.Build.0 = Debug|Any CPU
96-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|Any CPU.ActiveCfg = Release|Any CPU
97-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|Any CPU.Build.0 = Release|Any CPU
98-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|x64.ActiveCfg = Release|Any CPU
99-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|x64.Build.0 = Release|Any CPU
100-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|x86.ActiveCfg = Release|Any CPU
101-
{2794CB27-C6A2-4156-A919-C033A9EE474E}.Release|x86.Build.0 = Release|Any CPU
102-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
103-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|Any CPU.Build.0 = Debug|Any CPU
104-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|x64.ActiveCfg = Debug|Any CPU
105-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|x64.Build.0 = Debug|Any CPU
106-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|x86.ActiveCfg = Debug|Any CPU
107-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Debug|x86.Build.0 = Debug|Any CPU
108-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|Any CPU.ActiveCfg = Release|Any CPU
109-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|Any CPU.Build.0 = Release|Any CPU
110-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|x64.ActiveCfg = Release|Any CPU
111-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|x64.Build.0 = Release|Any CPU
112-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|x86.ActiveCfg = Release|Any CPU
113-
{CE5036FE-9B94-40CC-8084-26ACE74D806A}.Release|x86.Build.0 = Release|Any CPU
114-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
115-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
116-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|x64.ActiveCfg = Debug|Any CPU
117-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|x64.Build.0 = Debug|Any CPU
118-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|x86.ActiveCfg = Debug|Any CPU
119-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Debug|x86.Build.0 = Debug|Any CPU
120-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
121-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|Any CPU.Build.0 = Release|Any CPU
122-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|x64.ActiveCfg = Release|Any CPU
123-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|x64.Build.0 = Release|Any CPU
124-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|x86.ActiveCfg = Release|Any CPU
125-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE}.Release|x86.Build.0 = Release|Any CPU
126-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
127-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
128-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|x64.ActiveCfg = Debug|Any CPU
129-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|x64.Build.0 = Debug|Any CPU
130-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|x86.ActiveCfg = Debug|Any CPU
131-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Debug|x86.Build.0 = Debug|Any CPU
132-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
133-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|Any CPU.Build.0 = Release|Any CPU
134-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|x64.ActiveCfg = Release|Any CPU
135-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|x64.Build.0 = Release|Any CPU
136-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|x86.ActiveCfg = Release|Any CPU
137-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0}.Release|x86.Build.0 = Release|Any CPU
138-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
139-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
140-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|x64.ActiveCfg = Debug|Any CPU
141-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|x64.Build.0 = Debug|Any CPU
142-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|x86.ActiveCfg = Debug|Any CPU
143-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Debug|x86.Build.0 = Debug|Any CPU
144-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
145-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|Any CPU.Build.0 = Release|Any CPU
146-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|x64.ActiveCfg = Release|Any CPU
147-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|x64.Build.0 = Release|Any CPU
148-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|x86.ActiveCfg = Release|Any CPU
149-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D}.Release|x86.Build.0 = Release|Any CPU
150-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
151-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|Any CPU.Build.0 = Debug|Any CPU
152-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|x64.ActiveCfg = Debug|Any CPU
153-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|x64.Build.0 = Debug|Any CPU
154-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|x86.ActiveCfg = Debug|Any CPU
155-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Debug|x86.Build.0 = Debug|Any CPU
156-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|Any CPU.ActiveCfg = Release|Any CPU
157-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|Any CPU.Build.0 = Release|Any CPU
158-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|x64.ActiveCfg = Release|Any CPU
159-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|x64.Build.0 = Release|Any CPU
160-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|x86.ActiveCfg = Release|Any CPU
161-
{B709ED34-B782-4617-AE83-C0170A2EEE19}.Release|x86.Build.0 = Release|Any CPU
162-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
163-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|Any CPU.Build.0 = Debug|Any CPU
164-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|x64.ActiveCfg = Debug|Any CPU
165-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|x64.Build.0 = Debug|Any CPU
166-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|x86.ActiveCfg = Debug|Any CPU
167-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Debug|x86.Build.0 = Debug|Any CPU
168-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|Any CPU.ActiveCfg = Release|Any CPU
169-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|Any CPU.Build.0 = Release|Any CPU
170-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|x64.ActiveCfg = Release|Any CPU
171-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|x64.Build.0 = Release|Any CPU
172-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|x86.ActiveCfg = Release|Any CPU
173-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71}.Release|x86.Build.0 = Release|Any CPU
17462
EndGlobalSection
17563
GlobalSection(SolutionProperties) = preSolution
17664
HideSolutionNode = FALSE
@@ -179,14 +67,6 @@ Global
17967
{AEDF2B02-F301-4AC6-9DBC-2744746D816A} = {1D64A210-F73A-4F91-9598-4C51865D105D}
18068
{3B83795B-9870-43FA-82AF-95A44CF0194F} = {7D5B343C-B34D-481C-8774-B6BB14BC1B22}
18169
{84F35A01-ECC4-4635-B702-77F6B18FD54C} = {7D5B343C-B34D-481C-8774-B6BB14BC1B22}
182-
{09F10630-405B-4270-9AB6-0AB8F2EE6621} = {1D64A210-F73A-4F91-9598-4C51865D105D}
183-
{2794CB27-C6A2-4156-A919-C033A9EE474E} = {1D64A210-F73A-4F91-9598-4C51865D105D}
184-
{CE5036FE-9B94-40CC-8084-26ACE74D806A} = {1D64A210-F73A-4F91-9598-4C51865D105D}
185-
{B66081C4-2DE2-451C-AE3B-6D2A8B9BE0EE} = {1D64A210-F73A-4F91-9598-4C51865D105D}
186-
{31A2470C-29B0-45BD-A9E8-340E7BDA15B0} = {1D64A210-F73A-4F91-9598-4C51865D105D}
187-
{D3A5AA1A-1E6F-43FD-B827-3015429D6E6D} = {1D64A210-F73A-4F91-9598-4C51865D105D}
188-
{B709ED34-B782-4617-AE83-C0170A2EEE19} = {1D64A210-F73A-4F91-9598-4C51865D105D}
189-
{9D2E636E-1C4D-4130-908D-4174B6D7AC71} = {1D64A210-F73A-4F91-9598-4C51865D105D}
19070
EndGlobalSection
19171
GlobalSection(ExtensibilityGlobals) = postSolution
19272
SolutionGuid = {836C3B9A-682A-4E6F-8053-92BFC9D29D89}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# AsyncRx.NET NuGet Package Unification
2+
3+
When the AsyncRx.NET was added to the dotnet/reactive repository back in 2017, it reflected the Rx v3 packaging approach in which all the various elements were split out. This ADR describes the change to a smaller number of packages.
4+
5+
## Status
6+
7+
Proposed.
8+
9+
## Context
10+
11+
The original AsyncRx.NET code was split into many packages. Note that none of these was published to NuGet. We had the following:
12+
13+
* `System.Reactive.Async.Concurrency`
14+
* `System.Reactive.Async.Core`
15+
* `System.Reactive.Async.Disposables`
16+
* `System.Reactive.Async.Interfaces`
17+
* `System.Reactive.Async.Linq`
18+
* `System.Reactive.Async.Subjects`
19+
* `System.Reactive.Async`
20+
21+
There were also two more projects that didn't contain anything specific to asynchronous Rx:
22+
23+
* `System.Reactive.Bcl`
24+
* `System.Reactive.Shared`
25+
26+
The last of these, `System.Reactive.Shared`, contains the following types:
27+
28+
* `EventPattern`
29+
* `IEventPattern`
30+
* `IEventPatternSource`
31+
* `IEventSource`
32+
* `Notification`
33+
* `TimeInterval`
34+
* `TimeStamped`
35+
* `Unit`
36+
37+
Definitions for all of these types already exist in the `System.Reactive` component published to NuGet.
38+
39+
The `System.Reactive.Bcl` project contains two types providing asynchronous locking features. They appear to have been labelled `Bcl` because they are entirely non-Rx-specific, and are the sort of thing that might reasonably ultimately migrate into the BCL (and historically, a few things from Rx have done that). They are defined in the `System.Threading` namespace.
40+
41+
It's useful to understand the history of `System.Reactive.Async.Interfaces` in particular. This is the asynchronous counterpart of `System.Reactive.Interfaces`. Back in the days of Rx v2.0, that interfaces library was conceived of as the home for types that were expected not to evolve. The plan was that this library would remain unchanged as the rest of Rx expanded and evolved. This way, APIs could expose Rx interface types in a way that did not cause a dependency on some specific version of the Rx implementation types. But it didn't go to plan. New versions of the `System.Reactive.Async.Interfaces` got published with new Rx releases. And then in Rx 4.0, the 'great unification' occurred, and the relevant types moved into `System.Reactive` with `System.Reactive.Interfaces` becoming a backwards-compatibility façade containing nothing but type forwarders.
42+
43+
There's one important difference between Rx.NET and AsyncRx.NET when it comes to core interfaces. With Rx.NET, the two most critical interfaces, `IObservable<T>` and `IObserver<T>`, were added to the .NET runtime libraries. This means that any component can exposed Rx-based surface area without taking a dependency on any Rx library at all. The same is **not** true for AsyncRx.NET.
44+
45+
The two most critical interfaces in AsyncRx.NET, `IAsyncObservable<T>` and `IAsyncObserver<T>` have not been defined in the .NET runtime libraries. There is arguably a need—for example, Project Orleans has defined (Orleans.Streams.IAsyncObservable<T>)[https://learn.microsoft.com/en-us/dotnet/api/orleans.streams.iasyncobservable-1?view=orleans-7.0]. However, its definitions include Orleans-specific dependencies, so while the existence of that interface is evidence of a general-purpose requirement for this kind of thing, AsyncRx.NET cannot use that actual definition.
46+
47+
Moreover, there are some unresolved questions over how cancellation fits into the picture discussed at https://github.com/dotnet/reactive/issues/1296 which suggests that AsyncRx.NET's existing definitions of these interfaces might not yet be fully baked.
48+
49+
## Decision
50+
51+
There will be a single `System.Reactive.Async` component. In most cases, we will simply move code out of the other projects and into this one without modification. However, some of the projects require special consideration.
52+
53+
The `System.Reactive.Async.Interfaces` will be removed because it's not clear that even the two most critical interfaces, `IAsyncObservable<T>` and `IAsyncObserver<T>`, are fully baked, so it would be misleading to imply that these interfaces represent some stable type that can be relied on over a longer time frame than any particular AsyncRx.NET implementation release. (And in any case, that idea didn't quite pan out as planned for Rx.NET.) Moreover, merging these interface types into `System.Reactive.Async` is entirely consistent with the unification that was done with Rx.NET in v4.0. (And this does not introduce any of the problems we now see from that unification have gone too far, because there are no UI-framework-specific concerns in AsyncRx.NET.)
54+
55+
The `System.Reactive.Shared` component will be removed, and AsyncRx.NET will instead take a dependency on `System.Reactive`, so that it can use the definitions of these types from that library. The long-term intention is that AsyncRx.NET will depend on the (to-be-created) version of Rx.NET that fixes the problems around unwanted accidental dependencies on UI framework, currently planned to be Rx 7.0. To signal this 'future-oriented' nature of AsyncRx.NET, initial previews will not depend on the currently published Rx 5.0, but will depend on the latest available preview until such time as a non-preview Rx 7.0 ships.
56+
57+
The `System.Reactive.Bcl` component will be removed. The types it contains will move into `System.Reactive.Async`. We will move them out of the `System.Threading` namespace because at this point we have no plan for getting them into the .NET runtime libraries. We will check to see whether the runtime libraries do now in fact have similar functionality, in which case we will use that instead, and delete these types. But if there are no direct equivalents, we will move these into a suitable namespace and make them `internal` since they are implementation details, and it is not our intention for AsyncRx.NET to be providing general-purpose asynchronous programming utilities.
58+
59+
## Consequences
60+
61+
Consumers of AsyncRx.NET will see just a single NuGet package, `System.Reactive.Async`, removing any uncertainty over which is the right package to use.
62+
63+
By removing `System.Reactive.Shared`, we avoid duplicate definitions of all the types it contains. The downside is that a dependency on AsyncRx.NET now necessarily means a dependency on Rx.NET, which wasn't previously the case. (Our view is that most projects wanting AsyncRx.NET will probably want Rx.NET too, so we don't regard this as a serious downside.)
64+

AsyncRx.NET/System.Reactive.Async.Concurrency/System.Reactive.Async.Concurrency.csproj

Lines changed: 0 additions & 13 deletions
This file was deleted.

AsyncRx.NET/System.Reactive.Async.Core/System.Reactive.Async.Core.csproj

Lines changed: 0 additions & 13 deletions
This file was deleted.

AsyncRx.NET/System.Reactive.Async.Disposables/System.Reactive.Async.Disposables.csproj

Lines changed: 0 additions & 12 deletions
This file was deleted.

AsyncRx.NET/System.Reactive.Async.Interfaces/System.Reactive.Async.Interfaces.csproj

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)