ProtoPromise 3.3.0
See the version list below for details.
Requires NuGet 2.5 or higher.
dotnet add package ProtoPromise --version 3.3.0
NuGet\Install-Package ProtoPromise -Version 3.3.0
<PackageReference Include="ProtoPromise" Version="3.3.0" />
<PackageVersion Include="ProtoPromise" Version="3.3.0" />
<PackageReference Include="ProtoPromise" />
paket add ProtoPromise --version 3.3.0
#r "nuget: ProtoPromise, 3.3.0"
#:package ProtoPromise@3.3.0
#addin nuget:?package=ProtoPromise&version=3.3.0
#tool nuget:?package=ProtoPromise&version=3.3.0
Robust and efficient library for management of asynchronous operations.
- Allocation-free async operations
- Cancelable operations with custom allocation-free CancelationToken/Source
- Allocation-free async iterators with async Linq
- Progress with enforced normalization
- Structured concurrency
- async/await support and .Then API
- Thread safe
- Easily switch to foreground or background context
- Circular await detection
- Full causality traces
- Interoperable with Tasks
- CLS compliant
This library was built to work in all C#/.Net ecosystems, including Unity, Mono, .Net Framework, .Net Core, and AOT compilation. It is CLS compliant, so it works with any .Net language.
ProtoPromise conforms to the Promises/A+ Spec as far as is possible with C#.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.HashCode (>= 6.0.0)
- Microsoft.Bcl.TimeProvider (>= 8.0.1)
- ProtoPromise.Analyzer (>= 1.0.0)
- System.Buffers (>= 4.6.0)
- System.Memory (>= 4.6.0)
- System.Threading.Tasks.Extensions (>= 4.6.0)
-
.NETStandard 2.1
- Microsoft.Bcl.TimeProvider (>= 8.0.1)
- ProtoPromise.Analyzer (>= 1.0.0)
-
net6.0
- Microsoft.Bcl.TimeProvider (>= 8.0.1)
- ProtoPromise.Analyzer (>= 1.0.0)
-
net8.0
- ProtoPromise.Analyzer (>= 1.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on ProtoPromise:
| Package | Downloads |
|---|---|
|
ProtoPromise.UnityHelpers.2018.3
Package Description |
|
|
ProtoPromise.UnityHelpers.2023.1
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.5.0 | 298 | 8/11/2025 |
| 3.4.0 | 259 | 5/3/2025 |
| 3.3.0 | 588 | 1/27/2025 |
| 3.2.0 | 1,908 | 11/3/2024 |
| 3.1.1 | 1,049 | 8/17/2024 |
| 3.1.0 | 380 | 6/30/2024 |
| 3.0.2 | 812 | 4/12/2024 |
| 3.0.1 | 436 | 4/6/2024 |
| 3.0.0 | 468 | 3/18/2024 |
| 2.7.0 | 1,453 | 2/11/2024 |
| 2.6.1 | 1,202 | 10/22/2023 |
| 2.6.0 | 475 | 10/2/2023 |
| 2.5.4 | 749 | 6/17/2023 |
| 2.5.3 | 734 | 6/9/2023 |
| 2.5.2 | 690 | 6/5/2023 |
| 2.5.1 | 672 | 5/27/2023 |
| 2.5.0 | 737 | 5/15/2023 |
| 2.4.1 | 894 | 2/6/2023 |
| 2.4.0 | 995 | 12/23/2022 |
| 2.3.0 | 1,125 | 9/25/2022 |
| 2.2.0 | 917 | 8/6/2022 |
| 2.1.0 | 898 | 6/20/2022 |
| 2.0.2 | 903 | 4/25/2022 |
| 2.0.1 | 921 | 4/7/2022 |
| 2.0.0 | 975 | 3/7/2022 |
Enhancements:
- Added `Proto.Timers`.
- `Timer` and `TimerFactory`
- Added `Promise.Delay` APIs.
- Added `Promise(<T>).WaitAsync` APIs with timeouts.
- Added delayed cancelation APIs to `CancelationSource`.
- `CancelationSource.New(TimeSpan, (optional) TimerFactory, (optional) linked token(s))`
- `CancelationSource.CancelAfter(TimeSpan)`
- Added `CancelationToken(bool)` constructor.
- Added `CancelationToken.RegisterWithoutImmediateInvoke` APIs.
Optimizations:
- `Promise(<T>).ConfigureAwait(ContinuationOptions)` consumes zero memory if `Promise.Config.AsyncFlowExecutionContextEnabled` is disabled (which is the default state).
- Reduced memory of `async Promise(<T>)`.
- Reduced memory of async synchronization primitives
- Reduced memory of `Promise.ParallelFor*` APIs.
- Reduced memory of `Channel`s.
- Optimized object pool contention.
- Internally avoid cost of zeroing types that contain no references.
- Split `Promise(<T>).ContinueWith` methods without a `CancelationToken` parameter to avoid the cost of the token when it's not needed.
- Reduced memory and increased speed of `AsyncLazy<T>` when the factory is invoked.
- No longer pool memory allocated from `AsyncLazy<T>`.
Deprecated:
- `Promise(<T>).{Then, Catch, CatchCancelation}` APIs accepting a `CancelationToken` parameter. (Prefer `WaitAsync` followed by the same API without the token.)
- Deprecated `CancelationSource.{IsValid, TryCancel, TryDispose}`. (Prefer `!= default` and methods without `Try` prefix.)
- Deprecated `CancelationToken.{TryRegister, TryRegisterWithoutImmediateInvoke}`. (Prefer `CanBeCanceled` and methods without `Try` prefix.)
- Deprecated `Promise(<T>).Deferred.{IsValid*, Try*}` APIs. (Prefer `!= default`.)
- Deprecated `Promise(<T>).IsValid`.
Misc:
- Changed behavior of `CancelationSource.Cancel` to not throw if it's called more than once.
- Changed behavior of `CancelationSource`, `Promise(<T>).Deferred`, `Channel(Reader/Writer)` to throw `NullReferenceException` if it's default.