Releases: scribd/Lucid
Add support for Xcode 15+16
This is a point release to allow for the project to be compiled with Xcode 16. It does not yet support Swift 6.
Added support for Xcode 15 and iOS 17
This release fixes issues that occurred when compiling with Xcode 15 and iOS 17.
This also completes the major async/await migration by converting RemoteStore
and APIClientQueue
to Swift Concurrency.
Add Swift Concurrency Support
A major change to Lucid!
Swift Concurrency is now supported on all of the primary actions on CoreManager
:
- get
- remove
- set
- search
The Combine versions of these functions are also still supported.
As of this release, graph building and stores are not yet updated with Swift Concurrency, that will be rolled out in a later release.
Fix runtime deadlock and publisher crashes
This fixes:
- a deadlock issue we ran into we migrating over to async/await. This was an existing issue that wasn't exposed until we moved to code that increased the performance rate of calls.
- two runtime crashes tied to thread-safety issues in the AMB Publisher and the CoreManagerProperty.
Added test support for all platforms
This update extends LucidTestKit support for all available platforms:
- iOS
- macOS
- tvOS
- watchOS
Update for iOS 16
This makes two key changes:
- Updates the code to be compatible with Xcode 14, iOS 16.
- Fixes a crashing issue with
Combine.Future
by replacing it with an equivalent classPublishers.ReplayOnce
.
EntityGraph objects now carry Metadata
This update contains one feature change and one bug fix.
The feature is to add Metadata
directly onto the EntityGraph
, this simplifies passing all data back as a single object when using graphs.
The bug fix is a race condition in CoreManagerProperty
when setting up a new subscriber. There was a chance that using the receive(on:)
function would delay the initialization of the subscriber and it would not receive the initial event. The subscriber should now receive all events regardless of any set-up timing.
Lucid now uses Apple's Combine framework natively.
As of this release going forward, Lucid will exclusively only support Apple's Combine framework, and all ReactiveKit support has been deprecated.
For existing users that were already building Lucid for Combine, the exposed APIs haven't changed at all, so your code should work exactly as it did before.
Lucid now also exports a few Combine convenience extensions to assist in your code, including:
- a
flatMapError()
function. Combine'sflatMap()
doesn't support transforming the error type unless you have iOS 14 as your base target. mapToResult()
. This will transform your publisher to a failure type ofNever
and change the output type toResult<Output, Failure>
.Publishers.AMB
. An ambiguous race condition observer that takes an array of publishers and returns the first value received from any publisher.CancellableBox
andCancellableActor
, two thread-safe types that can be passed toAnyCancellable
.- a few other error managing convenience functions ported from the existing ReactiveKit extensions.
1.0.1
Added new targets for macOS and tvOS!
Added concept of cache_size
for entities to control the size of the memory store. These can be specified as "small", "medium", or "large" (with values for each group specified at initialization) or with a fixed, unique value.