This version is preview, if you want to use stable version, check 1.3.1.
This release will improve performance, especially memory allocation.
The automatic reuse mechanism has achieved zero allocation in most use cases.
However, it has many breaking changes.
- 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) - Add
UniTask.Preserve
, it converts to allow multiple await - Almost UniTask methods and AsyncMethodBuilder's runner automatically reuse(zero allocation)
UniTask.Lazy
returnsAsyncLazy<T>
- DelayFrame return type is changed from
UniTask<int>
toUniTask
- Add
UniTask.Create
- UniTask accepts new
IUniTaskSource
instead ofIAwaiter
- Add
UniTask.VoidAction
,UniTask.VoidUnityAction
- WhenAny return type is changed to
(int winArgumentIndex, T1 result1, T2 result2, ...)
UniTaskCompletionSource
can reuse by.Reset()
- Add
AutoResetUniTaskCompletionSource
UniTaskScheduler.UnobservedExceptionWriteLogType
's default is changed toLogType.Exception
- JobHandle await extension does not accept
CancellationToken
- Add
JobHandle.WaitAsync
- Add new last PlayerLoopTimings (
PlayerLoopTiming.LastPostLateUpdate
is same asWaitForEndOfFrame
) - All Trigger method combinates
GetAsync***Trigger
andGet***AsyncHandler
and***Async
. - Improved UniTaskTracker Window, enable a jump to the source file
- Support addressable await(
AsyncOperationHandle
andAsyncOpereationHandle<T>
)
Reports are welcome, please comment on the this issue below.
#61