Skip to content

Releases: ReactiveCocoa/ReactiveSwift

7.1.1

06 Jan 15:23
40c465a
Compare
Choose a tag to compare

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)
  2. Explicitly declare APPLICATION_EXTENSION_API_ONLY for CocoaPods (#866, kudos to @lickel)

7.1.0

12 Dec 11:25
509916c
Compare
Choose a tag to compare

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)
  2. Fix some issues related to locking, bumped min OS versions to iOS 10, macOS 10.12, tvOS 10, watchOS 3 (#859, kudos to @mluisbrown)
  3. Add async helpers to Schedulers (#857, kudos to @p4checo)
  4. Add primary associated types to SignalProducerConvertible & SignalProducerProtocol (#855, kudos to @braker1nine)
  5. Refactor Github Actions to cover more swift versions (#858, kudos to @braker1nine)
  6. Use OSAllocatedUnfairLock instead of os_unfair_lock on supported Apple platforms (#856, kudos to @mluisbrown)

7.0

19 Nov 15:03
Compare
Choose a tag to compare
7.0

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)

  2. Fixed issue where SingalProducer.try(upTo:interval:count:) shares state between invocation of start on the same producer. (#829, kudos to @sebastiangrail)

  3. Signal.Event is now marked as frozen enum. (#841, kudos to @NachoSoto)

6.7.0

03 Sep 12:07
Compare
Choose a tag to compare

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.

  2. SignalProducer offers an unserialized variant via SignalProducer.unserialized(_:). (#797)

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

  2. Fixed spelling error in Lifetime.Token class documentation. (#835, kudos to @ansonj)

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

23 Jul 17:28
Compare
Choose a tag to compare
Pre-release

Release Candidate 1 of ReactiveSwift 6.7.0 has been promoted to be the stable release.
Check the 6.7.0 release note for more details.

6.6.1

23 Jun 20:14
Compare
Choose a tag to compare

Changes

  1. Updated Carthage xcconfig dependency to 1.1 for proper building arm64 macOS variants. (#826, kudos to @MikeChugunov)

  2. Fixed issue with SignalProducer.Type.interval() making Swift 5.3 a requirement. (#823 kudos to @mluisbrown)

6.6.0

08 Mar 17:54
Compare
Choose a tag to compare

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.

  2. Bumped deployment target to iOS 9.0, per Xcode 12 warnings. (#818, kudos to @harleyjcooper)

  3. Fixed a few deprecation warning when the project is being built. (#819, kudos to @apps4everyone)

6.5.0

27 Oct 16:46
Compare
Choose a tag to compare

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)

  2. Add ExpressibleByNilLiteral constraint to OptionalProtocol (#805, kudos to @nkristek)

  3. Add variadic sugar for boolean static methods such as Property.any(boolProperty1, boolProperty2, boolProperty3) (#801, kudos to @fortmarek)

6.4.0

29 Sep 18:02
Compare
Choose a tag to compare

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)

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

6.3.0

25 May 17:07
Compare
Choose a tag to compare

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)

    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 }
      }
    }
  2. When combineLatest or zip over a sequence of SignalProducers or Propertys, 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)