UniRx Versions Save

Reactive Extensions for Unity

7.1.0

4 years ago

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.

7.0.0

4 years ago

UniRx.Async is separated to https://github.com/Cysharp/UniTask

6.2.2

5 years ago

This update is for Unity 2018.3(beta).

  • Add CancelletaionToken.RegisterWithoutCaptureExecutionContext
  • Fix warning about WWW on Unity 2018.3
  • Fix does not work UniRx.Async on Unity 2018.3

6.2.0

5 years ago

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 -> UniTaskTracker editor 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/IsFaulted extension methods
  • Fix UniTask.SwitchToThreadPool does not yield correctly
  • Fix UniTask.SwitchToTaskPool does not yield correctly
  • Fix IEnumerable[UniTask] shortcut #336, thanks @Reqweldzen
  • Fix Propagate Canceled status when throws OperationCanceledException
  • Improve AsyncTriggers throws OperationCanceledException when trigger was destroyed
  • Improve unhandled exception was routed to UniTaskScheduler.UnobservedTaskException when unahandled task was GCed
  • Improve peformance UniTask.WhenAll
  • Improve performance UniTask.Yield
  • Improve reduce AsyncStateMachine garbage
  • Improve UniTask.ToString shows status
  • Breaking Changes UniTask.WithCancellation is removed(use SuppressCancellationThrow instead)
  • Internaly Unit test moved to Unity Test Runner

6.2.1

  • Improve Enumerable.Select(async x => { }) returns IEnumerable<UniTask<T>> instead of IEnumerable<Task<T>>
  • Improve performance single uGUI async event handling
  • Fix button.OnInvokeAsync -> button.OnClickAsync
  • Add AsyncUnityEventHandler.OnInvokeAsyncSuppressCancellationThrow
  • Fix AsyncTriggers does not work correctly

6.1.2

5 years ago
  • 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

6.1.0

5 years ago

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 AsyncEventHandler that enables async/await based eventhandling
  • Add UniRx.Async.Triggers that enables async/await based monobehaviour event handling
  • Add Progress.Create that is lightweight Progress(no use SynchronizationContext) factory
  • Add assembly definition UniRx.Async
  • Improve UniRx.Async.Delay, DelayFrame, Wait, WaitUntil, WaitUntilValueChanged, WaitUntilValueChangedWithIsDestroyed can reuse task to reduce garbage
  • Improve Unity AsyncObject await handling(has three methods GetAwaiter, ToUniTask, ConfigureAwait)
  • Improve UniTask[T].Timeout cancellation 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) to UniTask.Delay(int millisecondsDelay)
  • Breaking Changes Promise[T] to UniTaskCompletionSource[T]
  • Breaking Changes IPromise[T] to IAwaiter[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

6.0.0

5 years ago

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>, UniTaskVoid instead of Task, Task<T> and void
  • There work on custom async method builder in async/await(uses C# 7.0 task-like feature)
  • It no depends Task and SynchronizationContext, completely unity threading friendly and achives no-overhead, less garbage
  • UniTask.Delay, UniTask.Yield, UniTask.Timeout that is frame-based timer operators(no uses thread so works on WebGL publish) driven by custom PlayerLoop(Unity 2018 experimental feature)
  • UniTask.WhenAll, same as Task.WhenAll but you can get awaited value by tuple deconsruction syntax
  • UniTask.WhenAny, same as Task.WhenAny but you can get which index win
  • UniTask.ctor(Func<UniTask>) is like the embeded AsyncLazy<T>
  • Promise<T> is the lightweight edition of TaskCompletionSource<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>.ToReactiveProperty returns IReadOnlyReactiveProperty<T>

Removed obsolete components

  • IEnumerable<T>.AsSafeEnumerable<T>
  • LazyTask<T>
  • UniRxSynchronizationContext
  • MainThreadDispatchType.AfterUpdate
  • ObservableMonoBehaviour
  • TypedMonoBehaviour
  • IPresenter, PresenterBase, PresenterBase<T>

5.5.0

7 years ago

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<T>, IObserver<T> instead of UniRx.IObservable<T>, IObserver<T> use System.Tuple instad of UniRx.Tuple (but lost ValueType tuple, should we create other tuple?) use System.IProgress<T> 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

5.4.1

7 years ago

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

5.4.0

7 years ago

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