Releases: neuecc/UniRx
Ver 7.1.0
Fix AsyncReactiveCommand constructor #365, thanks @TORISOUP
Fix Build error of UniRx.Example
Fix await behaviour of ReactiveProperty #419, thanks @TORISOUP
Other note, Added CircleCI UnitTest/Package Build https://circleci.com/gh/neuecc/UniRx
async/await is separated to https://github.com/Cysharp/UniTask , if error is occured, remove package(clean) and re-import.
Ver 7.0.0
UniRx.Async is separated to https://github.com/Cysharp/UniTask
Ver 6.2.2
Ver 6.2.0(6.2.1)
Improve cancellation/exception handling in UniRx.Async.
All unhandled exception was routed to UniTaskScheduler.UnobservedTaskException(called UniTask/UniTaskVoid.Forget or when unhandled task was GCed)
OperationCanceledException can modify to AwaiterStatus.Canceled in async method and can ignore when routed to top.
New UniRx -> UniTaskTracker editor window can detect async/await memory leak easily.
- Add
UniTask.Run - Add
UniTask.SwitchToSynchronizationContext - Add
UniTask.Lazy - Add
UniTask.Void - Add
UniTask.SwitchToMainThread - Add
UniTask.SuppressCancellationThrow - Add
CancellationTokenSource.CancelAfterSlim - Add
CancellationTokenSource.RegisterRaiseCancelOnDestroy - Add
Progress.CreateOnlyValueChanged - Add
UniTaskScheduler(UnobservedTaskException/PropagateOperationCanceledException/UnobservedExceptionWriteLogType/DispatchUnityMainThread) - Add
Task.AsUniTask(bool useCurrentSynchronizationContext) - Add await support to
ValueTuple - Add
UniRx -> UniTaskTrackereditor window - Add
Dropdown.OnValueChangedAsync - Add
Dropdown.OnValueChangedAsObservable - Add
StackTrace.CleanupAsyncStackTrace - Add
Exception.CleanupAsyncStackTrace - Add
ReactiveProperty.WaitUntilValueChangedAsync(CancellationToken) - Add
ReactiveCommand.WaitUntilExecuteAsync(CancellationToken) - Add
AwaiterStatus.IsCompleted/IsCompletedSuccessfully/IsCanceled/IsFaultedextension methods - Fix
UniTask.SwitchToThreadPooldoes not yield correctly - Fix
UniTask.SwitchToTaskPooldoes not yield correctly - Fix
IEnumerable[UniTask]shortcut #336, thanks @reqweldzen - Fix Propagate
Canceledstatus when throwsOperationCanceledException - Improve AsyncTriggers throws
OperationCanceledExceptionwhen trigger was destroyed - Improve unhandled exception was routed to
UniTaskScheduler.UnobservedTaskExceptionwhen unahandled task was GCed - Improve peformance
UniTask.WhenAll - Improve performance
UniTask.Yield - Improve reduce AsyncStateMachine garbage
- Improve
UniTask.ToStringshows status - Breaking Changes
UniTask.WithCancellationis removed(useSuppressCancellationThrowinstead) - Internaly Unit test moved to Unity Test Runner
6.2.1
- Improve
Enumerable.Select(async x => { })returnsIEnumerable<UniTask<T>>instead ofIEnumerable<Task<T>> - Improve performance single uGUI async event handling
- Fix
button.OnInvokeAsync->button.OnClickAsync - Add
AsyncUnityEventHandler.OnInvokeAsyncSuppressCancellationThrow - Fix AsyncTriggers does not work correctly
Ver 6.1.2
- Fix compile error in C# 6.0
- Add UniTask[UniTask[]].Unwrap
- Add IEnumerable[UniTask].GetAwaiter(UniTask.WhenALl shortcut)
- Add WithCancellationWithoutException
- Add UniTask.WithIsCancled
- Improve performance Task.WhenAll
- Improve performance UniTask.Timeout
- Breaking Change Add IAwaiter.AwaiterStatus
Ver 6.1.1
UniRx.Async
- Add await support to
JobHandle - Add await support to
WWW - Add await support to
ReactiveProperty - Add await support to
ReactiveCommand - Add await support to uGUI events(
button.GetAsyncEventHandler,button.OnCliCkAsync, etc...) - Add await support to monobehaviour events(
UniRx.Async.Triggers) - Add
UniTask[T].ToCoroutine - Add
UniTask.WaitUntil - Add
UniTask.WaitWhile - Add
UniTask.WaitUntilValueChanged - Add
UniTask.WaitUntilValueChangedWithIsDestroyed - Add
UniTask.SwitchToThreadPool - Add
UniTask.SwitchToTaskPool - Add
UniTask.ConfigureAwait - Add
UniTask.WithCancellation - Add
UniTask.FromCanceled - Add
UniTask.Forget - Add
UniTask.ContinueWith - Add
Task.ConfigureAwait - Add
UniTask.DelayFrame - Add
UniTask.Delay(..., bool ignoreTimeScale = false, ...)parameter - Add
AsyncEventHandlerthat enables async/await based eventhandling - Add
UniRx.Async.Triggersthat enables async/await based monobehaviour event handling - Add
Progress.Createthat is lightweight Progress(no use SynchronizationContext) factory - Add assembly definition
UniRx.Async - Improve
UniRx.Async.Delay, DelayFrame, Wait, WaitUntil, WaitUntilValueChanged, WaitUntilValueChangedWithIsDestroyedcan reuse task to reduce garbage - Improve Unity AsyncObject await handling(has three methods
GetAwaiter,ToUniTask,ConfigureAwait) - Improve
UniTask[T].Timeoutcancellation handling more correctly - Fix general cancellation handling in 6.0.0's async operators
- Fix ReadOnlyReactiveProperty.Dispose does not unsubcribe source subscription(from 6.0.0)
- Fix PlayerLoop item handling
- Breaking Changes
UniTask.Delay(int frameCount)toUniTask.Delay(int millisecondsDelay) - Breaking Changes
Promise[T]toUniTaskCompletionSource[T] - Breaking Changes
IPromise[T]toIAwaiter[T]
UniRx
- Add
IObservable[T].ToUniTask - Add
UniTask[T].ToObservable - Add assembly definition
UniRx - Auto publish OnError message from "FromCoroutine"/"FromMicroCoroutine" #232, thanks @TORISOUP
- Fixed bug, caused by boolean typo in
ObjectPool.StartShrinkTimer. #248, thanks @Joshualight - Add joint trigger (OnJointBreak() + OnJointBreak2D()) #249, thanks @lopespm
- keep stacktrace when throws an exception #251, thanks @jimmylovesiren
- Fixed TakeUntil to respect official definition #269, thanks @silphid
- If the field is in the base class, the inspector can not access it. Fix. #284, thanks @Bezarius
- Change "Sample" operator behavior. #296, thanks @TORISOUP
- Fix countChanged dispose #302, thanks @RDeluxe
- Add try catch block to handle exception when finishing ContinueWith #312, thanks @sheepbeo
- Add notifyCurrentCount option to ReactiveDictionary.ObserveCountChanged #321, thanks @faidra
- fix ContinueWith disposing immediately #322, thanks @jimmylovesiren
ver 6.0.0
Improvement platform supports
- Support .NET Standard 2.0
- Support .NET 4.x
- Support UWP on .NET/IL2CPP
- Support C# 7.x on Incremental Compiler
UniRx.Async module on Unity Incremental Compiler(C# 7.x)
UniRx.Async is custom async/await support instead of Task.
This does not depend UniRx so you can use separate UniRx.Async package without UniRx.
- Add
UniTask,UniTask<T>,UniTaskVoidinstead ofTask,Task<T>andvoid - There work on custom async method builder in
async/await(uses C# 7.0 task-like feature) - It no depends
TaskandSynchronizationContext, completely unity threading friendly and achives no-overhead, less garbage UniTask.Delay,UniTask.Yield,UniTask.Timeoutthat is frame-based timer operators(no uses thread so works on WebGL publish) driven by custom PlayerLoop(Unity 2018 experimental feature)UniTask.WhenAll, same asTask.WhenAllbut you can get awaited value by tuple deconsruction syntaxUniTask.WhenAny, same asTask.WhenAnybut you can get which index winUniTask.ctor(Func<UniTask>)is like the embededAsyncLazy<T>Promise<T>is the lightweight edition ofTaskCompletionSource<T>, the API is same as EcmaScript's Promise- await support for unity async objects(
AsyncOperation,ResourceRequest,UnityWebRequestAsyncOperation,IEnumerator)
Redesigned ReactiveProperty and ReadOnlyReactiveProperty
- Inlined publisher(prev design uses
Subject<T>, current uses self iteration) - Returns subscription as node-self(does not create extra garbage on subscribe)
- Removed
ReactiveProperty.ctor(IObservable<T>)overload - Modified
IObservable<T>.ToReactivePropertyreturnsIReadOnlyReactiveProperty<T>
Removed obsolete components
IEnumerable<T>.AsSafeEnumerable<T>LazyTask<T>UniRxSynchronizationContextMainThreadDispatchType.AfterUpdateObservableMonoBehaviourTypedMonoBehaviourIPresenter,PresenterBase,PresenterBase<T>
ver 5.5.0
This release is available in AssetStore on 2016-10-04
New Experimental support for Unity .NET 4.6 async/await
Add: ObserveEveryValueChanged(bool fastDestroyCheck) overload
Add: Observable.Sample(intervalSourcea) overload, thanks @svermeulen
Fix: UWP Platform compile error
Breaking Changes: Remove workaround for Unity WWW dispose freeze bug
Unity 5.5.0xMono-Runtime-Upgrade-1-b4 Support details
use System.IObservable, IObserver instead of UniRx.IObservable, IObserver
use System.Tuple instad of UniRx.Tuple (but lost ValueType tuple, should we create other tuple?)
use System.IProgress instead of UniRx.Progress
use System.Threading.CancellationToken instead of UniRx.CancellationToken
add GetAwaiter to UniRx for supports async/await for IObservable
create UniRxSynchronizationContext to support async/await completly
add ToObservable to Task
supplemental Unity coroutine support async/await
ver 5.4.1
This release is available in AssetStore on 2016-09-08
https://www.assetstore.unity3d.com/jp/#!/content/17276
Improvement: Support Unity 5.5 Beta
Fix: ThrottleFirstFrame throws NullReferenceException when stream sends OnNext immediately. #160, thanks @hsanno
Fix: Error on LogEntry.cs #164, thanks @kimsama
Fix: ToReadOnlyReactiveProperty should be distinct publishing #161
Fix: To(ReadOnly)ReactiveProperty cause strange result when source observable returns OnCompleted or OnError
(Breaking) Changes: PresenterBase was obsoleted(but it only commented, not marked [Obsolete])
Breaking Changes: Sample14 was removed
Breaking Changes: Removed ObservableMonoBehaviour, TypedMonoBehaviour in UNITY 5.5 or newer
ver 5.4.0
This release is available in AssetStore on 2016-08-01
https://www.assetstore.unity3d.com/jp/#!/content/17276
Add: Observable.FrameInterval
Add: Observable.FrameTimeInterval
Add: Observable.BatchFrame
Add: Observable.Debug(under UniRx.Diagnostics namespace)
Add: ObservableParticleTrigger and OnParticleCollisionAsObservable, OnParticleTriggerAsObservabl(after Unity 5.4) extension methods
Add: UniRx.AsyncReactiveCommand
Add: ReactiveCommand.BindToOnClick, IObservable<bool>.BindToButtonOnClick
Add: UniRx.Toolkit.ObjectPool, AsyncObjectPool
Add: UniRx.AsyncMessageBroker, asynchronous variation of MessageBroker
Add: ObserveEveryValueChanged(IEqualityComparer) overload
Add: Observable.FromCoroutine(Func<CancellationToken, IEnumerator>) overload
Add: ObservableYieldInstruction.IsDone property
Add: IPresenter.ForceInitialize(object argument)
Improvement: Where().Select(), Select().Where() peformance was optimized that combine funcs at internal
Improvement: MicroCoroutine performance was optimized that prevent refresh spike
Improvement: Observable.Return performance was optimized that reduced memory cost
Improvement: Observable.Return(bool) was optimzied perofmrance that allocate zero memory
Improvement: Observable.ReturnUnit was optimzied perofmrance that allocate zero memory
Improvement: Observable.Empty was optimzied perofmrance that allocate zero memory
Improvement: Observable.Never was optimzied perofmrance that allocate zero memory
Improvement: Observable.DelayFrame performance was optimized
Improvement: UnityEqualityComparer.GetDefault peformance was optimized
Improvement: AddTo(gameObject) dispose when ObservableTrigger is not activated
Improvement: AddTo(gameObject/component) performance was optimized by use inner CompositeDisposable of ObservableDestroyTrigger
Improvement: FromCoroutine<T>(Func<IObserver<T>, IEnumerator>) stops coroutine when subscription was disposed
Improvement: ReactiveCollection, ReactiveDictionary implements dispose pattern
Fix: ToYieldInstruction throws exception on MoveNext when reThrowOnError and has error
Fix: ObserveEveryValueChanged publish value immediately(this is degraded from UniRx 5.3)
Fix: Prevent warning on Unity 5.4 at ObservableMonoBehaviour/TypedMonoBehaviour.OnLevelWasLoaded
Fix: Remove indexer.set of IReadOnlyReactiveDictionary
Breaking Changes: Does not guaranty MicroCoroutine action on same frame
Breaking Changes: UniRx.Diagnostics.LogEntry was changed from class to struct for performance improvement