v3.0.0
Enhancements:
- Added
UnityEngine.Awaitable
extensions to convert toPromise
. - Added overloads accepting
ReadOnlySpan<T>
parameter.CancelationSource.New
AsyncEnumerable<T>.Merge
Promise(<T>).{All(Settled), Race(WithIndex), First(WithIndex)}
- Added
CancelationToken.TryRegisterWithoutImmediateInvoke<TCancelable>
API. - Added
AsyncSemaphore.EnterScopeAsync(CancelationToken)
andAsyncSemaphore.EnterScope(CancelationToken)
overloads.
Fixes:
- Enumerator is properly disposed in
Promise.ParallelForEach
.
Optimizations:
- Improved performance and reduced memory of promises and types that use promises.
- Async synchronization primitives use spin lock instead of full Monitor lock.
Breaking Changes:
- Removed support for runtimes older than .Net Standard 2.0.
- Removed deprecated and useless APIs.
Deferred.{(Try)ReportProgress, (Try)Cancel, State, Retain, Release, New(CancelationToken)}
Promise.{Progress, AwaitWithProgress, NewDeferred(CancelationToken), Wait(TimeSpan), Retain, Release, New<T>, New<TCapture, T>, Rejected<T, TReject>, Canceled<TCancel>, Canceled<T, TCancel>, CancelException<T>}
Promise<T>.{WaitForResult(TimeSpan, out T), Retain, Release, AllNonAlloc, Canceled<TCancel>, NewDeferred(CancelationToken)}
CanelationRegistration.Unregister
CancelationSource.(Try)Cancel<TReason>
CancelationToken.{Retain, CancelationValueType, CancelationValue, TryGetCancelationValueAs<T>}
PoolType
Promise.Config.{ObjectPooling, WarningHandler}
Promise.Manager.{HandleCompletes, HandleCompletesAndProgress, HandleProgress, LogWarning}
ReasonContainer
Promise.ResultContainer.{RejectReason, RejectContainer, CancelContainer}
Promise<T>.ResultContainer.{Result, RejectReason, RejectContainer, CancelContainer}
AsyncMonitor.{WaitAsync(AsyncLock.Key, CancelationToken), Wait(AsyncLock.Key, CancelationToken)}
PromiseYielder.WaitOneFrame(MonoBehaviour)
UnhandledException.{ValueType, TryGetValueAs<T>}
CanceledException.{ValueType, Value, TryGetValueAs<T>}
- Removed
Promise(<T>).{ContinueFunc, ContinueAction}
delegates. Promise(<T>).ContinueWith
parameter delegate types changed to standardSystem.Action
andSystem.Func<>
.- Removed
IRetainable
interface. AsyncReaderWriterLock
upgrade key type changed fromAsyncReaderWriterLock.WriterKey
toAsyncReaderWriterLock.UpgradedWriterKey
.Proto.Promises.Async.CompilerServices
namespace changed toProto.Promises.CompilerServices
.PromiseMethodBuilder(<T>)
types renamed toAsyncPromiseMethodBuilder(<T>)
.- Moved
Proto.Promises.Extensions
toProto.Promises.TaskExtensions
andProto.Promises.CancellationTokenExtensions