Skip to content

v3.0.0

Compare
Choose a tag to compare
@timcassell timcassell released this 18 Mar 20:10
· 316 commits to master since this release
cd28b24

Enhancements:

  • Added UnityEngine.Awaitable extensions to convert to Promise.
  • 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) and AsyncSemaphore.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 standard System.Action and System.Func<>.
  • Removed IRetainable interface.
  • AsyncReaderWriterLock upgrade key type changed from AsyncReaderWriterLock.WriterKey to AsyncReaderWriterLock.UpgradedWriterKey.
  • Proto.Promises.Async.CompilerServices namespace changed to Proto.Promises.CompilerServices.
  • PromiseMethodBuilder(<T>) types renamed to AsyncPromiseMethodBuilder(<T>).
  • Moved Proto.Promises.Extensions to Proto.Promises.TaskExtensions and Proto.Promises.CancellationTokenExtensions