All Versions
Latest Version
Avg Release Cycle
77 days
Latest Release

Changelog History
Page 3

  • v3.0.0-rc.1 Changes

    ๐Ÿ›  1. Fixed integer overflow for DispatchTimeInterval in FoundationExtensions.swift (#506)

  • v3.0.0-alpha.1 Changes

    ๐Ÿšฆ 1. Signal now uses Lifetime for resource management. (#404, kudos to @andersio)

    The Signal initialzer now accepts a generator closure that is passed with the input Observer and the Lifetime as its arguments. The original variant accepting a single-argument generator closure is now obselete. This is a source breaking change.

       // New: Add `Disposable`s to the `Lifetime`.
       let candies = Signal<U, E> { (observer: Signal<U, E>.Observer, lifetime: Lifetime) in
          lifetime += trickOrTreat.observe(observer)
       // Obsolete: Returning a `Disposable`.
       let candies = Signal { (observer: Signal<U, E>.Observer) -> Disposable? in
          return trickOrTreat.observe(observer)

    ๐Ÿšฆ 1. SignalProducer.startWithSignal now returns the value of the setup closure. (#533, kudos to @Burgestrand)

  • v2.1.0-alpha.2 Changes

    ๐Ÿ‘€ 1. Disabled code coverage data to allow app submissions with Xcode 9.0 (see, kudos to @NachoSoto)

  • v2.1.0-alpha.1 Changes

    ๐Ÿšฆ 1. Signal.Observer.action has been deprecated. Use Signal.Observer.send instead. (#515)

    ๐Ÿ— 1. Workaround an unexpected EGAGIN error being returned by pthread in 32-bit ARM debug builds. (#508)

    ๐Ÿ”จ 1. The SignalProducer internals have undergone a significant refactoring, which bootstraps the effort to reduce the overhead of constant producers and producer compositions. (#487, kudos to @andersio)

  • v2.0.1 Changes

    ๐Ÿ— 1. Addressed the exceptionally high build time. (#495)

    1. New method retry(upTo:interval:on:). This delays retrying on failure by interval until hitting the upTo limitation.
  • v2.0.0-rc.3 Changes

    ๐Ÿ—„ 1. Lifetime.+= which ties a Disposable to a Lifetime, is now part of the public API and is no longer deprecated.

    1. Feedbacks from isEnabled to the state of the same Action no longer deadlocks if it does not constitute an infinite feedback loop. (#481, kudos to @andersio)

    Note that isExecuting already supports Action state feedback, and legitimate feedback loops would still deadlock.

  • v2.0.0-rc.2 Changes

    โœ… 1. Fixed a deadlock upon disposal when combining operators, i.e. zip and combineLatest, are used. (#471, kudos to @stevebrambilla for catching the bug)

  • v2.0.0-rc.1 Changes

    ๐Ÿšฆ 1. If the input observer of a Signal deinitializes while the Signal has not yet terminated, an interrupted event would now be automatically sent. (#463, kudos to @andersio)

    1. ValidationResult and ValidatorOutput have been renamed to ValidatingProperty.Result and ValidatingProperty.Decision, respectively. (#443)

    ๐Ÿšฆ 1. Mitigated a race condition related to ARC in the Signal internal. (#456, kudos to @andersio)

    1. Added new convenience initialisers to Action that make creating actions with state input properties easier. When creating an Action that is conditionally enabled based on an optional property, use the renamed Action.init(unwrapping:execute:) initialisers. (#455, kudos to @sharplet)
  • v2.0.0-alpha.3 Changes

    ๐Ÿšฆ 1. combinePrevious for Signal and SignalProducer no longer requires an initial value. The first tuple would be emitted as soon as the second value is received by the operator if no initial value is given. (#445, kudos to @andersio)

    ๐Ÿšฆ 1. Fixed an impedance mismatch in the Signal internals that caused heap corruptions. (#449, kudos to @gparker42)

    1. In Swift 3.2 or later, you may create BindingTarget for a key path of a specific object. (#440, kudos to @andersio)
  • v2.0.0-alpha.2 Changes

    1. In Swift 3.2 or later, you can use map() with the new Smart Key Paths. (#435, kudos to @sharplet)

    ๐Ÿšฆ 1. When composing Signal and SignalProducer of inhabitable types, e.g. Never or NoError, ReactiveSwift now warns about operators that are illogical to use, and traps at runtime when such operators attempt to instantiate an instance. (#429, kudos to @andersio)

    ๐Ÿšฆ 1. N-ary SignalProducer operators are now generic and accept any type that can be expressed as SignalProducer. (#410, kudos to @andersio) Types may conform to SignalProducerConvertible to be an eligible operand.

    ๐ŸŽ 1. The performance of SignalProducer has been improved significantly. (#140, kudos to @andersio)

    All lifted SignalProducer operators no longer yield an extra Signal. As a result, the calling overhead of event delivery is generally reduced proportionally to the level of chaining of lifted operators.

    1. interrupted now respects observe(on:). (#140)

    When a produced Signal is interrupted, if observe(on:) is the last applied operator, interrupted would now be delivered on the Scheduler passed to observe(on:) just like other events.

    1. Feedbacks from isExecuting to the state of the same Action, including all enabledIf convenience initializers, no longer deadlocks. (#400, kudos to @andersio)

    2. MutableProperty now enforces exclusivity of access. (#419, kudos to @andersio)

    In other words, nested modification in MutableProperty.modify is now prohibited. Generally speaking, it should have extremely limited impact as in most cases the MutableProperty would have been deadlocked already.

    1. promoteError can now infer the new error type from the context. (#413, kudos to @andersio)