Skip to content

Commit 2c329a3

Browse files
authored
Merge pull request #406 from ReactiveCocoa/changelog
2.0 Changelog
2 parents fcfcbc6 + 44d1cbf commit 2c329a3

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

CHANGELOG.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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

Comments
 (0)