3.0.0
This is the first release of ReactiveSwift 3.0. It supports Swift 3.2 and Swift 4.0, and requires either Xcode 9 or the Swift 4.0 OSS compiler toolchain.
Breaking Change
-
Signal
now usesLifetime
for resource management. (#404, kudos to @andersio)The
Signal
initialzer now accepts a generator closure that is passed with the inputObserver
and theLifetime
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) }
-
Unavailable symbols in ReactiveSwift 2.x have been removed. (#551, kudos to @ikesyo)
Bugfix
-
Workaround an unexpected EGAGIN error being returned by pthread in 32-bit ARM debug builds. (#508)
-
Fixed a potential integer overflow regarding the leeway computation in
SignalProducer.timer
. (#506, kudos to @soxjke)
Changes
-
ReactiveSwift has been migrated to Swift 4.0. (#422, kudos to @andersio)
-
SignalProducer.startWithSignal
now returns the value of the setup closure. (#533, kudos to @Burgestrand) -
Disabled code coverage data to allow app submissions with Xcode 9.0 (see Carthage/Carthage#2056, kudos to @NachoSoto)
-
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)
Deprecation
Signal.Observer.action
has been deprecated. UseSignal.Observer.send
instead. (#515)