The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
This the second minor release of ReactiveSwift 7.
The minimum deployment targets for Apple OSes have been increased to iOS 11, macOS 10.13, tvOS 11 and watchOS 4. If you need to support older OS versions, please continue to use 7.0.0 or 7.1.0.
1. Bumped deployment target to iOS 11, tvOS 11, watchOS 4, macOS 10.13, per Xcode 14 warnings (#865, kudos to @lickel)
1. Explicitly declare `APPLICATION_EXTENSION_API_ONLY` for CocoaPods (#866, kudos to @lickel)
This the first minor release of ReactiveSwift 7.
The minimum deployment targets for Apple OSes have been increased to iOS 10, macOS 10.12, tvOS 10 and watchOS 3. If you need to support older OS versions, please continue to use 7.0.0.
# Changes
1. Add CI Release jobs on tag push (#862, kudos to @p4checo)
1. Fix some issues related to locking, bumped min OS versions to iOS 10, macOS 10.12, tvOS 10, watchOS 3 (#859, kudos to @mluisbrown)
1. Add `async` helpers to Schedulers (#857, kudos to @p4checo)
1. Add primary associated types to SignalProducerConvertible & SignalProducerProtocol (#855, kudos to @braker1nine)
2. Refactor Github Actions to cover more swift versions (#858, kudos to @braker1nine)
1. Use `OSAllocatedUnfairLock` instead of `os_unfair_lock` on supported Apple platforms (#856, kudos to @mluisbrown)
This is the first release of ReactiveSwift 7.0. It has a couple of minor breaking changes in both ABI and source over ReactiveSwift 6.0.
## Changes
1. The UnidirectionalBinding operator `<~` returns non optional values. (#834, kudos to @NicholasTD07)
1. Fixed issue where `SingalProducer.try(upTo:interval:count:)` shares state between invocation of `start` on the same producer. (#829, kudos to @sebastiangrail)
1. `Signal.Event` is now marked as frozen enum. (#841, kudos to @NachoSoto)
This is the seventh minor release of ReactiveSwift 6.
## Additions
1. `Signal` offers two special variants for advanced users: unserialized and reentrant-unserialized. (#797)
The input observer of these variants assume that mutual exclusion has been enforced by its callers.
You can create these variants through four `Signal` static methods: `unserialized(_:)`, `unserializedPipe(_:)`, `reentrantUnserialized(_:)` and `reentrantUnserializedPipe(_:)`. These would be adopted by ReactiveCocoa UIKit bindings to improve interoperability with Loop, to tackle some legitimate recursive delivery scenarios (e.g. around first responder management), and also to reduce fine-grained locking in ReactiveCocoa.
Note that the default behavior of `Signal` has not been changed — event serialization remains the default behavior.
1. `SignalProducer` offers an unserialized variant via `SignalProducer.unserialized(_:)`. (#797)
1. `TestScheduler` can now advanced its clock by `TimeInterval`. (#828, kudos to @carsten-wenderdel)
## Changes
1. `Signal` and Properties now use fewer locks, which should translate into minor performance improvements. (#797)
1. Fixed spelling error in `Lifetime.Token` class documentation. (#835, kudos to @ansonj)
1. As a continued refactoring effort since ReactiveSwift 6.6.0, all unary `Signal` and `SignalProducer` operators have been migrated to a new internal representation.
When debugging your application, the call stacks involving ReactiveSwift may now look cleaner, without the clutter of compiler-generated reabstraction thunks. See #799 for an example.
6.7.0 Release Candidate 1
2 years ago
Release Candidate 1 of ReactiveSwift 6.7.0 has been promoted to be the stable release.
Check [the 6.7.0 release note](https://github.com/ReactiveCocoa/ReactiveSwift/releases/tag/6.7.0) for more details.
## Changes
1. Updated Carthage xcconfig dependency to 1.1 for proper building arm64 macOS variants. (#826, kudos to @MikeChugunov)
1. Fixed issue with `SignalProducer.Type.interval()` making Swift 5.3 a requirement. (#823 kudos to @mluisbrown)
This is the sixth minor release of ReactiveSwift 6.0.
## Addition
1. Added the `SignalProducer.Type.interval()` operator for emitting values on a regular schedule. (#810, kudos to @mluisbrown)
## Changes
1. When debugging your application, the call stacks involving ReactiveSwift may start to look cleaner and less cryptic. This is an on-going refactoring effort to improve the developer experience. See #799 for an example.
1. Bumped deployment target to iOS 9.0, per Xcode 12 warnings. (#818, kudos to @harleyjcooper)
1. Fixed a few deprecation warning when the project is being built. (#819, kudos to @apps4everyone)
This is the fifth minor release of ReactiveSwift 6.0.
⚠️ ReactiveSwift 6.5.0 is a **strongly recommended update**, especially for users routinely lifting custom `Signal` operators to work with `SignalProducer`.
## Changes
1. Fixed a `SignalProducer.lift` issue which may leak intermediate signals. (#808)
1. Add ExpressibleByNilLiteral constraint to OptionalProtocol (#805, kudos to @nkristek)
1. Add variadic sugar for boolean static methods such as `Property.any(boolProperty1, boolProperty2, boolProperty3)` (#801, kudos to @fortmarek)
This is the forth minor release of ReactiveSwift 6.
## Changes
1. Minimum deployment target is now iOS 9.0+ when using Swift Package Manager, so as to silence Xcode 12 warnings. (#802)
1. Fix a debug assertion in `Lock.try()` that could be raised in earlier OS versions (< iOS 10.0, < macOS 10.12). (#747, #788)
Specifically, ReactiveSwift now recognizes `EDEADLK` as expected error code from `pthread_mutex_trylock` alongside `0`, `EBUSY` and `EAGAIN`.
This is the third minor release of ReactiveSwift 6.
## Additions
1. `Property` and `MutableProperty` can now be used as property wrapper. Note that they remain a reference type container, so it may not be appropriate to use them in types requiring value semantics. (#781)
```swift
class ViewModel {
@MutableProperty var count: Int = 0
func subscribe() {
self.$count.producer.startWithValues {
print("`count` has changed to \(count)")
}
}
func increment() {
print("count prior to increment: \(count)")
self.$count.modify { $0 += 1 }
}
}
```
1. When `combineLatest` or `zip` over a sequence of `SignalProducer`s or `Property`s, you can now specify an optional `emptySentinel` parameter, which would be used when the sequence is empty.
This becomes relevant, when the sequence of producers is calculated from some other Signal and the signal resulting from the joined producers is observed. If no value is sent when the sequence is empty, the observer gets terminated silently, and, e.g., the UI would not be updated.
(#774, kudos to @rocketnik)
## Miscellaneous
1. Test dependencies should no longer be built for SwiftPM users, as a result of ReactiveSwift moving to `swft-tools-version: 5.2`. (#784)