Skip to content

Releases: Cysharp/UniTask

Ver.2.0.21

25 Jun 14:08
Compare
Choose a tag to compare

Add: UniTask.ToCancellationToken
Breaking Changes: Removed UniTask.DelayRealtime(), changed to UniTask.Delay(delayType: DelayType.Realtime)
Breaking Changes: Removed UniTask.Timeout(bool ignoreTimeScale), changed to Timeout(DelayType delayType)
Breaking Changes: Removed CancellationTokenSource.CancelAfterSlim(bool ignoreTimeScale), changed to CancelAfterSlim(DelayType delayType)

Ver.2.0.20

23 Jun 20:09
Compare
Choose a tag to compare

Breaking Changes
TextMeshPro, DOTween and Addressables supports are separated to external asmdef, UniTask.DOTween, UniTask.Addressables, UniTask.TextMeshPro.

  • Add: UniTask.DelayRealtime
  • Add: UniTask.Post
  • Add: TMP_InputField event extensions like standard uGUI InputField
  • Improvement: UnityWebRequestException performance
  • Fix: UnityWebRequestExtensions obsolete warning in Unity 2020.2

Ver.2.0.19

17 Jun 18:44
Compare
Choose a tag to compare
  • Important Fix: can not close application in mono build
  • Fix: AsyncLazy can not await multiple times when task is not completed
  • Fix: UniTask.TimeoutWithoutException does not supress exception
  • Fix: UniTask.Delay can not use from threadpool thread
  • Add: UniTask.Run(Func<UniTask>) overload
  • Improvement: UniTaskCompletionSource can await multiple times before completed(same behaviour as TaskCompletionSource)
  • Breaking Changes: removed UniTaskCompletionSource.Reset()

Ver.2.0.18

15 Jun 06:34
Compare
Choose a tag to compare
  • Add AsUniTaskAsyncEnumerable/AsAsyncEnumerable in .NET Core
  • Add UniTasyAsyncEnumerable.Subscribe(Func<T, CancellationToken, UniTaskVoid>) overload
  • Improvement: await UnityWebRequestAsyncOperation throws UnityWebRequestException when isHttpError or isNetworkError

Ver.2.0.17

14 Jun 06:29
Compare
Choose a tag to compare

Fix UniTaskAsyncEnumerable.EveryUpdate/Timer/TimerFrame's CancellationToken does not work correctly, thanks @yashihei
Add UniTaskAsyncEnumerable.Subscribe

Ver.2.0.16

11 Jun 18:22
Compare
Choose a tag to compare
  • Improvement: back to the zero allocation in IL2CPP
  • Add (I/ReadOnly)AsyncReactiveProperty.WaitAsync
  • Add IDisposable.AddTo(CancellationToken)

Ver.2.0.15

09 Jun 05:58
Compare
Choose a tag to compare

Important Note
Previous 2.0.x releases does not work correctly on IL2CPP release build under a specific condition.
This version is fixed it so be sure to use this.
Currently, a side effect of the fix is that one allocation may occur in IL2CPP builds.

  • Fix unobserved exception shows error in UniTaskTracker window
  • Fix ToCoroutine does not throws exception when error detected
  • Add UniTask.NextFrame
  • Add UniTask.WaitForEndOfFrame
  • Add UniTask.WaitForFixedUpdate
  • Breaking Changes: WithCancellation is returned from native timing of PlayerLoop
  • Breaking Changes: UniTask.Delay/DelayFrame, UniTaskAsyncEnumerable.Timer/Interval/TimerFrame/IntervalFrame always skip initial frame

Ver.2.0.14

05 Jun 08:22
Compare
Choose a tag to compare
  • Improve DOTween Extensions
  • Add netstandard2.0 support to NuGet package
  • Fix UniTask.Defer
  • Fix UniTask.ReturnToCurrentSynchronizationContext
  • Fix can not await struct IEnumerator

Ver.2.0.13

04 Jun 06:29
Compare
Choose a tag to compare

First stable release of UniTask v2.
It has many improvement and some breaking changes from v1.


New Features

  • Almost all UniTask methods and async method automatically reuse(zero allocation) and reduced heap allocation size
  • Asynchronous LINQ, UniTaskAsyncEnumerable standard factory and all linq operators and Unity specified factory generator
  • uGUI component has ***AsAsyncEnumerable that converts event to async stream.
  • All async triggers(Cysharp.Threading.Tasks.Triggers) implements IUniTaskAsyncEnumerable<T>
  • Stacktrace in PlayerLoop shows current PlayerLoopTiming
  • Available .NET Core package in NuGet
  • Improved UniTaskTracker Window, enable a jump to the source file and TaskName displays generics type name
  • DOTween support in default(require to com.demigiant.dotween import from OpenUPM or define UNITASK_DOTWEEN_SUPPORT)
  • Addressable support in default(AsyncOperationHandle and AsyncOpereationHandle<T> as awaitable)
  • UniTaskCompletionSource can reuse by .Reset()
  • New last PlayerLoopTimings (PlayerLoopTiming.LastPostLateUpdate is same as WaitForEndOfFrame)
  • New AsyncReactiveProperty, AsyncReadOnlyReactiveProperty, that similar as ReactiveProperty in UniRx
  • New Channel.CreateSingleConsumerUnbounded, that is equivalent to System.Threading.Channels, similar as go channel
  • TaskPool to set/monitor pooling size by TaskPool.SetMaxPoolSize, TaskPool.GetCacheSizeInfo

New Methods

  • Add UniTask.Preserve, it converts to allow multiple await
  • Add UniTask.WaitUntilCanceled
  • Add UniTask.Create
  • Add UniTask.Defer
  • Add UniTask.Action/UnityAction
  • Add JobHandle.WaitAsync
  • Add CancellationToken.WaitUntilCanceled extension method
  • Add UnityEvent<T> and InputField AsyncEventHandler and extensions
  • Add WithCancellation method to all async operation extensions

Changed from UniTask v1

  • Namespace change: UniRx.Async -> Cysharp.Threading.Tasks
  • All UniTask/UniTask<T> can not await twice(will throw exception), Reusable Promise is discontinuance
  • All UniTask Factory method(such as UniTask.Delay) run immediately(same as standard Task, previously it does not run before call await)
  • All Trigger method combinates GetAsync***Trigger and Get***AsyncHandler and ***Async.
  • UniTask.Lazy returns AsyncLazy<T>
  • UniTask accepts IUniTaskSource instead of IAwaiter
  • UniTask.WhenAny return type is changed to (int winArgumentIndex, T1 result1, T2 result2, ...)
  • UniTask.WhenAll's tuple does not use specified name
  • UniTaskScheduler.UnobservedExceptionWriteLogType's default is changed to LogType.Exception
  • UniTaskVoid can not await
  • IObservable<T>.ToUniTask parameter order changed from CancellationToken cancellationToken, bool useFirst to bool useFirst, CancellationToken cancellationToken
  • UniTask.VoidAction is renamed to UniTask.Action
  • UniTask.DelayFrame return type is changed from UniTask<int> to UniTask
  • UniTask.Void/Action/UnityAction type is changed from Func<UniTask> to Func<UniTaskVoid>
  • Removed ConfigureAwait method from all async operation extensions(renamed to ToUniTask)
  • Removed new UniTask(factory), use UniTask.Create or UniTask.Lazy instead
  • UnityWebRequest's AsyncOperation calls UnityWebRequest.Abort() when detect canceled
  • JobHandle await extension does not accept CancellationToken
  • Lower Unity support version is changed to 2018.4.13f1
  • Modified directory structure, under Runtime and Edtior directory to follow standard UPM design

Ver 2.0.12-rc9

28 May 18:49
Compare
Choose a tag to compare
Ver 2.0.12-rc9 Pre-release
Pre-release

This version is preview, if you want to use stable version, check 1.3.1.

2.0.x has many breaking changes, see 2.0.0-preview1 release notes.

Improvement

  • All await AsyncOperations become zero allocation
  • Reduced async/await heap allocation size
  • Improved internal task pool system(reduce heap allocation size, more performant)
  • TaskTracker's TaskName displays generics type name
  • Add TaskPool.SetMaxPoolSize
  • Add TaskPoolMonitor.GetCacheSizeInfo (next rc or release, will be changed to TaskPool.GetCacheSizeInfo)