ReactiveSwift v3.1.0 Release Notes

Release Date: 2018-01-11 // over 6 years ago
  • ๐Ÿš€ This is the first release of ReactiveSwift 3.1. It supports Swift 3.2 and Swift 4.0.

    ๐Ÿ›  Bugfix

    ๐Ÿ›  Fixed a scenario of downstream interruptions being dropped. (#577, kudos to @andersio)

    Manual interruption of time shifted producers, including delay, observe(on:), throttle, debounce and lazyMap, should discard outstanding events at best effort ASAP.

    But in ReactiveSwift 2.0 to 3.0, the manual interruption is ignored if the upstream producer has terminated. For example:

    // Completed upstream + `delay`.SignalProducer.empty .delay(10.0, on: QueueScheduler.main) .startWithCompleted { print("The producer should have been interrupted!") } .dispose()// Console(t+10): The producer should have been interrupted!
    

    โช The expected behavior has now been restored.

    โฑ Please note that, since ReactiveSwift 2.0, while the interruption is handled immediately, the interrupted event delivery is not synchronous โ€” it generally respects the closest asynchronous operator applied, and delivers on that scheduler.

    ๐Ÿ›  Fixed schedule(after:interval:leeway:) being cancelled when the returned Disposable is not retained. (#584, kudos to @jjoelson)

    โฑ The issue affects only direct use of QueueScheduler. SignalProducer.timer is not affected.

    โž• Addition

    ๐Ÿšฆ 1. SignalProducer.concat now has an overload that accepts an error. (#564, kudos to @nmccann)

    ๐Ÿ”„ Change

    ๐Ÿ“š 1. Fix some documentation errors (#560, kudos to @ikesyo)