2.0.0 alpha 2: Producing Productive Producers.
Pre-releaseThis is the second alpha release of ReactiveSwift 2.0. It targets Swift 3.1 with preliminary support of Swift 3.2 and Swift 4.0.
Highlights
-
The performance of
SignalProducerhas been improved significantly. (#140, kudos to @andersio)All lifted
SignalProduceroperators no longer yield an extraSignal. As a result, the calling overhead of event delivery is generally reduced proportionally to the level of chaining of lifted operators. -
When composing
SignalandSignalProducerof inhabitable types, e.g.NeverorNoError,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)
Changes
-
interruptednow respectsobserve(on:). (#140)When a produced
Signalis interrupted, ifobserve(on:)is the last applied operator,interruptedwould now be delivered on theSchedulerpassed toobserve(on:)just like other events. -
Feedbacks from
isExecutingto the state of the sameAction, including allenabledIfconvenience initializers, no longer deadlocks. (#400, kudos to @andersio) -
MutablePropertynow enforces exclusivity of access. (#419, kudos to @andersio)In other words, nested modification in
MutableProperty.modifyis now prohibited. Generally speaking, it should have extremely limited impact as in most cases theMutablePropertywould have been deadlocked already.
Additions
-
New operator:
promoteValue. (#429) -
promoteErrorcan now infer the new error type from the context. (#413, kudos to @andersio) -
In Swift 3.2 or later, you can use
map()with the new Smart Key Paths. (#435, kudos to @sharplet) -
N-ary
SignalProduceroperators are now generic and accept any type that can be expressed asSignalProducer. (#410, kudos to @andersio)Types may conform to
SignalProducerConvertibleto be an eligible operand.