Skip to content

2.0.0 alpha 2: Producing Productive Producers.

Pre-release
Pre-release
Compare
Choose a tag to compare
@andersio andersio released this 09 Jun 21:46
· 590 commits to master since this release

This 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

  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.

  2. 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)

Changes

  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.

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

  3. 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.

Additions

  1. New operator: promoteValue. (#429)

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

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

  4. 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.