|
| 1 | +# master |
| 2 | +*Please add new entries at the top.* |
| 3 | + |
| 4 | +# 1.1.3 |
| 5 | +## Deprecation |
| 6 | +1. `observe(_:during:)` is now deprecated. It would be removed in ReactiveSwift 2.0. |
| 7 | + Use `take(during:)` and the relevant observation API of `Signal`, `SignalProducer` and `Property` instead. (#374) |
| 8 | + |
| 9 | +# 1.1.2 |
| 10 | +## Changes |
| 11 | +1. Fixed a rare occurrence of `interrupted` events being emitted by a `Property`. (#362) |
| 12 | + |
| 13 | +# 1.1.1 |
| 14 | +## Changes |
| 15 | +1. The properties `Signal.negated`, `SignalProducer.negated` and `Property.negated` are deprecated. Use its operator form `negate()` instead. |
| 16 | + |
| 17 | +# 1.1 |
| 18 | +## Additions |
| 19 | + |
| 20 | +#### General |
| 21 | +1. New boolean operators: `and`, `or` and `negated`; available on `Signal<Bool, E>`, `SignalProducer<Bool, E>` and `Property<Bool, E>` types. (#160, kudos to @cristianames92) |
| 22 | +2. New operator `filterMap`. (#232, kudos to @RuiAAPeres) |
| 23 | +3. New operator `lazyMap(on:_:)`. It coalesces `value` events when they are emitted at a rate faster than the rate the given scheduler can handle. The transform is applied on only the coalesced and the uncontended values. (#240, kudos to @liscio) |
| 24 | +4. New protocol `BindingTargetProvider`, which replaces `BindingTargetProtocol`. (#254, kudos to @andersio) |
| 25 | + |
| 26 | +#### SignalProducer |
| 27 | +5. New initializer `SignalProducer(_:)`, which takes a `@escaping () -> Value` closure. It is similar to `SignalProducer(value:)`, but it lazily evaluates the value every time the producer is started. (#240, kudos to @liscio) |
| 28 | + |
| 29 | +#### Lifetime |
| 30 | +6. New method `Lifetime.observeEnded(self:)`. This is now the recommended way to explicitly observe the end of a `Lifetime`. Use `Lifetime.ended` only if composition is needed. (#229, kudos to @andersio) |
| 31 | +7. New factory method `Lifetime.make()`, which returns a tuple of `Lifetime` and `Lifetime.Token`. (#236, kudos to @sharplet) |
| 32 | + |
| 33 | +#### Properties |
| 34 | +8. `ValidatingProperty`: A mutable property that validates mutations before committing them. (#182, kudos to @andersio). |
| 35 | +9. A new interactive UI playground: `ReactiveSwift-UIExamples.playground`. It demonstrates how `ValidatingProperty` can be used in an interactive form UI. (#182) |
| 36 | + |
| 37 | +## Changes |
| 38 | +1. Flattening a signal of `Sequence` no longer requires an explicit `FlattenStrategy`. (#199, kudos to @dmcrodrigues) |
| 39 | +2. `BindingSourceProtocol` has been renamed to `BindingSource`. (#254) |
| 40 | +3. `SchedulerProtocol` and `DateSchedulerProtocol` has been renamed to `Scheduler` and `DateScheduler`, respectively. (#257) |
| 41 | +4. `take(during:)` now handles ended `Lifetime` properly. (#229) |
| 42 | + |
| 43 | +## Deprecations |
| 44 | +1. `AtomicProtocol` has been deprecated. (#279) |
| 45 | +2. `ActionProtocol` has been deprecated. (#284) |
| 46 | +3. `ObserverProtocol` has been deprecated. (#262) |
| 47 | +4. `BindingTargetProtocol` has been deprecated. (#254) |
| 48 | + |
| 49 | +# 1.0.1 |
| 50 | +## Changes |
| 51 | +1. Fixed a couple of infinite feedback loops in `Action`. (#221) |
| 52 | +2. Fixed a race condition of `Signal` which might result in a deadlock when a signal is sent a terminal event as a result of an observer of it being released. (#267) |
| 53 | + |
| 54 | +Kudos to @mdiep, @sharplet and @andersio who helped review the pull requests. |
| 55 | + |
| 56 | +# 1.0 |
| 57 | + |
| 58 | +This is the first major release of ReactiveSwift, a multi-platform, pure-Swift functional reactive programming library spun off from [ReactiveCocoa](https://github.com/ReactiveCocoa/ReactiveCocoa). As Swift continues to expand beyond Apple’s platforms, we hope that ReactiveSwift will see broader adoption. To learn more, please refer to ReactiveCocoa’s [CHANGELOG](https://github.com/ReactiveCocoa/ReactiveCocoa/blob/master/CHANGELOG.md). |
| 59 | + |
| 60 | +Major changes since ReactiveCocoa 4 include: |
| 61 | +- **Updated for Swift 3** |
| 62 | + |
| 63 | + APIs have been updated and renamed to adhere to the Swift 3 [API Design Guidelines](https://swift.org/documentation/api-design-guidelines/). |
| 64 | +- **Signal Lifetime Semantics** |
| 65 | + |
| 66 | + `Signal`s now live and continue to emit events only while either (a) they have observers or (b) they are retained. This clears up a number of unexpected cases and makes Signals much less dangerous. |
| 67 | +- **Reactive Proxies** |
| 68 | + |
| 69 | + Types can now declare conformance to `ReactiveExtensionsProvider` to expose a `reactive` property that’s generic over `self`. This property hosts reactive extensions to the type, such as the ones provided on `NotificationCenter` and `URLSession`. |
| 70 | +- **Property Composition** |
| 71 | + |
| 72 | + `Property`s can now be composed. They expose many of the familiar operators from `Signal` and `SignalProducer`, including `map`, `flatMap`, `combineLatest`, etc. |
| 73 | +- **Binding Primitives** |
| 74 | + |
| 75 | + `BindingTargetProtocol` and `BindingSourceProtocol` have been introduced to allow binding of observable instances to targets. `BindingTarget` is a new concrete type that can be used to wrap a settable but non-observable property. |
| 76 | +- **Lifetime** |
| 77 | + |
| 78 | + `Lifetime` is introduced to represent the lifetime of any arbitrary reference type. This can be used with the new `take(during:)` operator, but also forms part of the new binding APIs. |
| 79 | +- **Race-free Action** |
| 80 | + |
| 81 | + A new `Action` initializer `Action(state:enabledIf:_:)` has been introduced. It allows the latest value of any arbitrary property to be supplied to the execution closure in addition to the input from `apply(_:)`, while having the availability being derived from the property. |
| 82 | + |
| 83 | + This eliminates a data race in ReactiveCocoa 4.x, when both the `enabledIf` predicate and the execution closure depend on an overlapping set of properties. |
| 84 | + |
| 85 | +Extensive use of Swift’s `@available` declaration has been used to ease migration from ReactiveCocoa 4. Xcode should have fix-its for almost all changes from older APIs. |
| 86 | + |
| 87 | +Thank you to all of @ReactiveCocoa/ReactiveSwift and all our contributors, but especially to @andersio, @liscio, @mdiep, @nachosoto, and @sharplet. ReactiveSwift is only possible due to the many hours of work that these individuals have volunteered. ❤️ |
0 commit comments