Commit Graph

1039 Commits

Author SHA1 Message Date
Stephen Celis
ef432a7ae1 wip 2024-10-24 10:40:22 -07:00
Stephen Celis
2009b9c3cb wip 2024-10-17 14:30:12 -07:00
Stephen Celis
d468b45abb wip 2024-10-17 14:17:30 -07:00
Stephen Celis
160bebb7a8 Shared: Simplify internal reference protocol 2024-10-16 14:31:38 -07:00
Stephen Celis
fc5cbeec88 Infrastructure: Address concurrency warnings in tests (#3438)
* Infrastructure: Address concurrency warnings in tests

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-15 10:03:23 -07:00
Stephen Celis
f43a154fd4 Fix Swift <6 warning (#3445)
Bit casting a type to the type it already is produces a warning.
2024-10-15 10:03:03 -07:00
mbrandonw
1aca801ee2 Run swift-format 2024-10-14 17:09:44 +00:00
Brandon Williams
2d0590bedd Clean up key path bitcasting. (#3411)
* Clean up key path bitcasting.

* wip

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-10-14 13:08:23 -04:00
Christopher Rex
4699a1e613 Add explicit @mainactor to NavigationLink initializer (#3430)
* Add explicit @MainActor to NavigationLink initializer

* Access Notification from within an explicit Task

Fixes the "Conformance of 'Notification' to 'Sendable' is unavailable" error

* Revert "Add explicit @MainActor to NavigationLink initializer"

This reverts commit d8cb0706c1.

* Add explicit @MainActor to NavigationLink initializer

* Update Examples/CaseStudies/SwiftUICaseStudies/03-Effects-LongLiving.swift

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

* Update swift-navigation dependency version to 2.2.2

* Discard changes to Examples/CaseStudies/CaseStudies.xcodeproj/project.pbxproj

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update Package@swift-6

* Fix tests

---------

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-09 16:57:34 -07:00
Stephen Celis
f9f3e3a4cb Use AnyHashableSendable from Concurrency Extras (#3428)
* Use `AnyHashableSendable` from Concurrency Extras

Rather than use an ad hoc implementation with an `AnyHashable` under the
hood that may not be concurrency safe, let's adopt the helper we added
to the Concurrency Extras packages.

* fix

* wip

* wip
2024-10-08 13:08:38 -07:00
Stephen Celis
4cd62511ab Update benchmarks target (#3424)
* wip

* benchmark update

* wip

* Rename  Benchmarks.swift to Benchmarks.swift

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-03 11:53:20 -07:00
Inhwan Kim
c8c97a45ae Add Import modules on NavigationStack tutorial source codes. (#3409) 2024-10-02 21:46:33 -07:00
Stephen Celis
85417e000e Update documentation and examples to use Swift Testing (#3413)
* Testing: Case Studies

* Testing: Search

* Testing: Speech Recognition

* Testing: SyncUps

* Project Settings

* Testing: TicTacToe

* Testing: Todos

* Testing: Voice Memos

* Update tutorials/docs

* fix

* Fixes

* wip

* Update ci.yml

* Update ci.yml

* Update ci.yml

* wip

* wip

* Quiet

* fix

* wip

* wip

* flaky

* wip

* wip

* fix
2024-10-02 16:28:33 -07:00
stephencelis
4c0866420f Run swift-format 2024-09-18 21:39:29 +00:00
Brandon Williams
d631d48c16 Added migration guide for 1.15 (#3390)
* Added migration guide for 1.15

* wip
2024-09-17 08:12:10 -04:00
Stephen Celis
dcecad3fe2 Soft-deprecate Store.ifLet (#3382)
* Soft-deprecate `Store.ifLet`

We can prefer `observe` and `if let store.scope` now.

* wip

* wip

* Update MigratingTo1.7.md

* wip
2024-09-13 13:51:00 -07:00
stephencelis
d750b2a96c Run swift-format 2024-09-12 21:30:41 +00:00
Stephen Celis
f1af33763e Swift 6 updates (#3379)
* Swift 6 updates

  - Soft-deprecate `_SynthesizedConformance` now that Xcode 16 has fixed
    this bug.
    - Update docs accordingly.

  - Document Xcode 16 macro gotcha around custom build configuration
    names.

* wip
2024-09-12 14:11:05 -07:00
Brandon Williams
03ad0cce2d Bucket effect cancel IDs. (#3374)
* Bucket effect cancel IDs.

* wip

* wip

* remove cache reset

* wip

* wip

* wip
2024-09-12 13:48:39 -04:00
Stephen Celis
912192b619 Remove unused perception branches (#3376) 2024-09-12 08:10:06 -07:00
stephencelis
e0367371e6 Run swift-format 2024-09-10 15:20:01 +00:00
Mason Kim
71cfb1ef2d Existential any to protocol for Swift 6 (#3370)
* Apply existential any to protocol for Swift 6

* Update Package@swift-6.0.swift

* Update Package.swift

* Apply any to Macro.Type

* Apply any for the rest

* Applying the any keyword internally for typealias in a _KeyPath

* Undoing accidental syntax

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2024-09-10 08:01:24 -07:00
Stephen Celis
19efcf62ce Update MigrationGuides.md 2024-09-09 12:40:56 -07:00
mbrandonw
12280a2253 Run swift-format 2024-09-06 20:47:24 +00:00
Brandon Williams
7c6fb26700 Address @Shared sendability. (#3329)
* Address @Shared sendability.

* Undo UncheckedSendable<UserDefaults>.

* clean up

* wip

* drop AnySendable.

* wip

* Address `Effect.throttle` sendability (#3325)

* Address effect cancellation sendability (#3326)

* Address effect cancellation sendability

* fix

* wip

* wip

* Separate SendableDefaultSubscript from DefaultSubscript.

* fix test

* drop escaping

* switch on swift 6 language mode

* xcode 16

* update test

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-09-06 16:28:23 -04:00
mbrandonw
83ed123041 Run swift-format 2024-09-06 16:12:40 +00:00
Brandon Williams
2c8b1c0cad Fix potential deadlock in Shared (#3356)
* Fixed shared deadlock.

* Fix deadlock>

* wip

* wip

* Improve test.
2024-09-06 12:11:40 -04:00
이동영
105bc0f34a fix typo - encapsulates (#3354) 2024-09-05 20:53:18 -07:00
Mason Kim
71f8291ee7 Replace deprecated viewStore with store (#3341)
* [FIX] Replace deprecated viewStore with store

* [FIX] Replace deprecated viewStore with store in Article

* [TEST] Match the changed view store message with the test message

* [TEST] Match the changed view store message with the test message
2024-09-05 14:41:59 -07:00
Pat Brown
5660c58164 Remove subscriptions from CurrentValueRelay when cancelled (#2699)
* Remove subscription on cancel

* Slight refactor

* Small refactor

Subscription keeps strong reference of `CurrentValueRelay` similar to `CurrentValueSubject`

* Add subscription lifetime tests

* Use weak subscriptions and remove inside send

* Change relay implementation

* For loop better

* Move tests to StoreTests.swift

* A few more locks and a Shared test.

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-09-05 17:04:54 -04:00
mino
64cf3e8509 fix typo (#3349) 2024-09-05 09:39:20 -04:00
Stephen Celis
d5c2d7679f Warn if bindable store binding action isn't processed (#3347)
* Warn if bindable store binding action isn't processed

Looks like the warnings we emit when we detect `BindingReducer` is
missing are only applied to view stores, and were not ported over to the
newer observable store bindings.

This PR fixes that, though the main caveat is the messages can't seem to
point to any good context. These bindings are derived from dynamic
member lookup, which can't include source context like file/line.

* wip

* Add test
2024-09-04 18:37:41 -07:00
mino
3425878241 add comma (#3345) 2024-09-04 10:13:46 -04:00
Stephen Celis
bb34f69141 Require main actor isolation in store collection (#3333)
* Require main actor isolation in store collection

* `preconditionIsolated` is not available in iOS <14

* Update Sources/ComposableArchitecture/Observation/IdentifiedArray+Observation.swift
2024-09-04 07:13:30 -07:00
stephencelis
5e3f42070f Run swift-format 2024-08-30 17:30:02 +00:00
Stephen Celis
40c5fb4eb0 Address Reducer._printChanges() sendability (#3320)
* Address `Reducer._printChanges()` sendability

Because printing is done on a queue, both `State` and `Action` must be
sendable. While `State` is easy enough to make sendable, it might be a
pain to do so in a large, modularized application. Actions are not
always so easy, but are in simple cases.

Alternately, since this is a debugging affordance:

1. We could forego sendability since all we're doing is hitting it with
   a `Mirror` at the end of the day, and traffic the state/action along
   in a `nonisolated(unsafe)`.

2. We could ditch the queue...but that could affect the performance
   pretty negatively in some cases.

* Unchecked send the debug printing
2024-08-30 10:24:54 -07:00
stephencelis
39268ea604 Run swift-format 2024-08-30 16:28:09 +00:00
Stephen Celis
890d2ee96f Address effect cancellation sendability (#3326)
* Address effect cancellation sendability

* fix

* wip

* wip
2024-08-30 09:15:35 -07:00
Stephen Celis
63b078029a Address Effect.throttle sendability (#3325) 2024-08-30 09:14:08 -07:00
stephencelis
f02d8f6650 Run swift-format 2024-08-29 21:09:34 +00:00
Stephen Celis
051e5bd653 Address RootStore sendability warnings (#3321) 2024-08-29 13:47:45 -07:00
Stephen Celis
cad094a6b2 Sendable miscellany: effects, publishers, etc. (#3317)
* `@preconcurrency @MainActor` isolation of `Store`

* Remove unneeded `@MainActor`s

* Remove thread checking code

* Remove unneeded `@MainActor`s

* Swift 5.10 compatibility fixes

* wip

* More 5.10 fixes

* wip

* fixes

* wip

* wip

* up the timeout

* wip

* Fixes

* wip

* wip

* wip

* wip

* wip

* Fix binding action sendability

* Address more binding action sendability

* more bindable action sendability

* more bindable action warnings

* fix

* Make `Effect.map` sendable

* Make `Effect.actions` sendable

Also moves it to the test target, since it's only really used there.

* Make `AnyPublisher.create` sendable

* Make `_SynthesizedConformance` sendable

* Avoid non-sendable captures of `self` in reducers

We can capture the sendable case path instead.

* Make `ViewStore.yield` sendable

* Address internal sendability warning

* fix

* Another small warning

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-08-29 13:47:32 -07:00
Stephen Celis
b8277a0244 Require sendable IDs in cancellation/reducers (#3318)
* Require sendable IDs in cancellation/reducers

Many of our APIs warn that we are passing hashable identifiers across
concurrency boundaries, so we should require that they're sendable.

* fix

* fix

* Fix
2024-08-29 13:46:48 -07:00
Stephen Celis
a7e2e73f83 Swift 6: Key path sendability (#3282)
* `@preconcurrency @MainActor` isolation of `Store`

* Remove unneeded `@MainActor`s

* Remove thread checking code

* Remove unneeded `@MainActor`s

* Swift 5.10 compatibility fixes

* wip

* More 5.10 fixes

* wip

* fixes

* wip

* wip

* up the timeout

* wip

* Fixes

* wip

* wip

* wip

* wip

* wip

* Fix binding action sendability

* Address more binding action sendability

* more bindable action sendability

* more bindable action warnings

* fix

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-08-29 13:46:39 -07:00
MaraMincho
c1a5c59cc7 Fix typo and deprecated content in Performance.md (#3323)
* fix Typo

* delete deprecated content
2024-08-29 09:07:20 -07:00
Stephen Celis
ddf72666da Remove disfavored NSObject.observe overload (#3316)
Now that we've locked to Swift Navigation >=2.2, we get this method for free.
2024-08-27 18:08:40 -07:00
stephencelis
97b7ebb018 Run swift-format 2024-08-27 19:39:04 +00:00
Stephen Celis
0d8980f5bc Swift 6: Main actor isolated store view helpers (#3283)
* `@preconcurrency @MainActor` isolation of `Store`

* Remove unneeded `@MainActor`s

* Remove thread checking code

* Remove unneeded `@MainActor`s

* Swift 5.10 compatibility fixes

* wip

* More 5.10 fixes

* wip

* fixes

* wip

* wip

* up the timeout

* wip

* Fixes

* wip

* wip

* wip

* wip

* wip

* wip

* Main actor logger

* wip

* wip

* wip

* fix

* fix

* fix

* fix compilation error

* wip

* wip

* bring back yield

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-08-27 12:31:43 -07:00
stephencelis
dfa29e0203 Run swift-format 2024-08-27 18:28:03 +00:00
Stephen Celis
08faf84fe3 MainActor Store Isolation (#3277)
* `@preconcurrency @MainActor` isolation of `Store`

* Remove unneeded `@MainActor`s

* Remove thread checking code

* Remove unneeded `@MainActor`s

* Swift 5.10 compatibility fixes

* wip

* More 5.10 fixes

* wip

* fixes

* wip

* wip

* up the timeout

* wip

* Fixes

* Remove mainActorASAP in favor of mainActorNow. (#3288)

* wip

* Run swift-format

* Update README.md

* Fix integration tests. (#3294)

* Fix integration tests.

* wip

* wip

* Run swift-format

* mainActorNow doesnt need escaping closure

* wip

* migration guide

* wip

* Update MigratingTo1.14.md

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
Co-authored-by: mbrandonw <mbrandonw@users.noreply.github.com>
2024-08-27 10:57:46 -07:00