Skip to content

0.27.0

Compare
Choose a tag to compare
@mluisbrown mluisbrown released this 12 Sep 12:36
· 447 commits to master since this release

RAS-TCA specific changes

Changed: now requires ReactiveSwift 6.7.0 which supports re-entrant signals. This change, which is only used in Store.send means that RAS-TCA now works exactly like the original Combine version and allows recursive calls to .send, which previously would cause a crash on obtaining a Signal lock.

This now means that in the cases where previously you needed to wrap a call to .send in a DispatchQueue.main.async {} wrapper, this is no longer required.

It also means that all performance improvements from TCA have now been able to be ported across 🚀 However this does can cause a potential breaking change as mentioned in the release notes for TCA 0.20.0:

Performance improvement/fix: a store publisher will only emit a single state change per synchronous Store.send and asynchronous effect received. This means synchronous effects (returned immediately from a reducer via Effect.init(value:)) will no longer result in extra publisher emissions. This is a breaking change if your application previously depended on each of these emissions. Workaround: use Publisher.receive(on:) to schedule these effects on the next run loop tick.

The workaround for RAS-TCA is to use .observe(on: QueueScheduler.main) for these situations.

From upstream TCA

This release brings this fork up to date with the upstream library at release 0.27.0:

From TCA 0.23.0

Please refer to the TCA 0.23.0 release notes.

From TCA 0.24.0

Please refer to the TCA 0.24.0 release notes.

From TCA 0.25.0

Please refer to the TCA 0.25.0 release notes.

Note:

Added: the Composable Architecture now uses Custom Dump for its debugging and testing tools. This library improves upon the original debugging/diffing tools that came with earlier versions of the Composable Architecture by collapsing unchanged parts of the diff, and more.

Since Custom Dump requires iOS 13, macOS 10.15 etc, this fork continues with the existing debugDump code in the library and doesn't use Custom Dump. This also means XCTAssertNoDifference is not available in this fork.

From TCA 0.26.0

Please refer to the TCA 0.26.0 release notes.

From TCA 0.27.0

Please refer to the TCA 0.27.0 release notes.