All Versions
Latest Version
Avg Release Cycle
77 days
Latest Release

Changelog History
Page 1

  • v7.0.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)

  • v6.7.0

  • v6.7.0-rc1 Changes

    ๐Ÿšฆ 1. New operator SignalProducer.Type.interval(_:interval:on:) for emitting elements from a given sequence regularly. (#810, kudos to @mluisbrown)

    ๐Ÿšฆ 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)

    ๐ŸŽ 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.

    ๐Ÿšฆ 1. New operator SignalProducer.take(until:) that forwards any values until shouldContinue returns false. Equivalent to take(while:), except it also forwards the last value that failed the check. (#839, kudos to @nachosoto)

  • v6.6.1 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)

  • v6.6.0 Changes

    โฑ 1. Added the SignalProducer.Type.interval() operator for emitting values on a regular schedule. (#810, kudos to @mluisbrown)

    ๐Ÿ”จ 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)


  • v6.5.0 Changes

    October 27, 2020

    ๐Ÿš€ 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

    ๐Ÿ›  Fixed a SignalProducer.lift issue which may leak intermediate signals. (#808)

    โž• Add ExpressibleByNilLiteral constraint to OptionalProtocol (#805, kudos to @nkristek)

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

  • v6.4.0 Changes

    September 29, 2020

    ๐Ÿš€ This is the forth minor release of ReactiveSwift 6.

    ๐Ÿ”„ Changes

    ๐Ÿš€ Minimum deployment target is now iOS 9.0+ when using Swift Package Manager, so as to silence Xcode 12 warnings. (#802)

    ๐Ÿ›  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.

  • v6.3.0 Changes

    May 25, 2020

    ๐Ÿš€ This is the third minor release of ReactiveSwift 6.0.

    โž• Additions

    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 = 0func subscribe() { self.$count.producer.startWithValues { print("`count` has changed to \(count)") } } func increment() { print("count prior to increment: \(count)") self.$count.modify { $0 += 1 } } }

    ๐Ÿšฆ 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)


    โœ… 1. Test dependencies should no longer be built for SwiftPM users, as a result of ReactiveSwift moving to swft-tools-version: 5.2. (#784)

  • v6.2.1 Changes

    February 28, 2020

    ๐ŸŽ 1. Improved performance of joining signals by a factor of around 5. This enables joining of 1000 and more signals in a reasonable amount of time. ๐Ÿšฆ 1. Fixed SignalProducer.debounce operator that, when started more than once, would not deliver values on producers started after the first time. (#772, kudos to @gpambrozio)

    1. FlattenStrategy.throttle is introduced. (#713, kudos to @inamiy) โšก๏ธ 1. Updated to reflect Swift 5.1 compatibility and point snippets to 6.1.0 (#763, kudos to @Marcocanc) โšก๏ธ 1. Update travis to Xcode 11.1 and Swift 5.1 (#764, kudos @petrpavlik)
    2. [SwiftPM] Add platforms (#761, kudos to @ikesyo) ๐Ÿ—„ 1. Renamed filterMap to compactMap and deprecated filterMap (#746, kudos to @Marcocanc)
  • v6.2.0 Changes

    January 07, 2020

    ๐Ÿ”„ Changes

    FlattenStrategy.throttle is introduced. (#713, kudos to @inamiy)

    Given a first inner stream, all subsequent inner streams sent by the upstream would be dropped until the first inner stream has completed. The whole process repeats indefinitely until the upstream terminates. The behavior is akin to throttle(_:on:) except for operating in the domain of streams instead of time.

    ๐Ÿ“ฆ The package file of ReactiveSwift now declares supported platforms. (#761, kudos to @ikesyo)

    ๐Ÿ—„ Renamed filterMap to compactMap and deprecated filterMap (#746, kudos to @Marcocanc)