From 76cb932a09aa102da2a911872f76a217aa9c804a Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 2 Aug 2026 15:25:37 +0800 Subject: [PATCH 1/2] Audit PreferenceKey and simplify type naming --- .../OpenSwiftUICore/Data/Preference/PreferenceKey.swift | 7 +++++-- Sources/OpenSwiftUICore/Render/PlatformViewFactory.swift | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceKey.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceKey.swift index cd86ca146..b4444993c 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceKey.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceKey.swift @@ -2,7 +2,7 @@ // PreferenceKey.swift // OpenSwiftUICore // -// Audited for 6.0.87 +// Audited for 6.5.4 // Status: Complete // ID: 3D8838A231BB2CC7FC00E7880D8B2FC4 (SwiftUICore) @@ -71,6 +71,9 @@ extension PreferenceKey { if name.isEmpty { let fullname = _typeName(Self.self, qualified: true) let results = fullname.split(maxSplits: 1) { $0 == "." } + guard results.count >= 2 else { + return fullname + } return String(results[1]) } else { return name @@ -88,7 +91,7 @@ package protocol PreferenceKeyVisitor { mutating func visit(key: K.Type) where K: PreferenceKey } -// MARK: - PreferenceKeys [6.5.4] +// MARK: - PreferenceKeys package struct PreferenceKeys: Equatable, RandomAccessCollection, MutableCollection { var keys: [any PreferenceKey.Type] = [] diff --git a/Sources/OpenSwiftUICore/Render/PlatformViewFactory.swift b/Sources/OpenSwiftUICore/Render/PlatformViewFactory.swift index 68dff648d..ebe6d9d47 100644 --- a/Sources/OpenSwiftUICore/Render/PlatformViewFactory.swift +++ b/Sources/OpenSwiftUICore/Render/PlatformViewFactory.swift @@ -177,7 +177,7 @@ package struct ViewDecoders { ) where T: Decodable, T: AnyViewFactory { registerDecodableFactoryType( factoryType, - forID: _typeName(type, qualified: true) + forID: _typeName(type) ) } From 541f4ed77d9a2932d2270b7d07c7bb1a4920e6c8 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 2 Aug 2026 16:19:31 +0800 Subject: [PATCH 2/2] Fix PreferenceBridge issue --- .../Data/Preference/PreferenceBridge.swift | 14 +++++++------- .../Data/Preference/PreferenceCombiner.swift | 8 ++++---- .../Data/Preference/PreferenceList.swift | 2 +- .../Preference/PreferenceTransformModifier.swift | 2 -- .../Preference/PreferenceWritingModifier.swift | 5 ++++- .../Data/Preference/PreferencesInputs.swift | 2 +- .../Data/Preference/PreferencesOutputs.swift | 3 ++- .../Data/Preference/View_Indirect.swift | 2 +- 8 files changed, 20 insertions(+), 18 deletions(-) diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceBridge.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceBridge.swift index 126235c94..0312a00b8 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceBridge.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceBridge.swift @@ -2,7 +2,7 @@ // PreferenceBridge.swift // OpenSwiftUICore // -// Audited for 6.0.87 +// Audited for 6.5.4 // Status: Complete // ID: A9FAE381E99529D5274BA37A9BC9B074 (SwiftUI) // ID: DF57A19C61B44C613EB77C1D47FC679A (SwiftUICore) @@ -32,9 +32,9 @@ package final class PreferenceBridge { requestedPreferences = PreferenceKeys() bridgedViewInputs = PropertyList() for child in children { - let viewGraph = child.takeRetainedValue() - viewGraph.invalidatePreferenceBridge() - child.release() + child._withUnsafeGuaranteedRef { viewGraph in + viewGraph.invalidatePreferenceBridge() + } } viewGraph = nil isValid = false @@ -105,9 +105,9 @@ package final class PreferenceBridge { package func removedStateDidChange() { for child in children { - let viewGraph = child.takeUnretainedValue() - viewGraph.updateRemovedState() - child.release() + child._withUnsafeGuaranteedRef { viewGraph in + viewGraph.updateRemovedState() + } } } diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceCombiner.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceCombiner.swift index d7979f415..fcd1c24dc 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceCombiner.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceCombiner.swift @@ -2,10 +2,10 @@ // PreferenceCombiner.swift // OpenSwiftUICore // -// Audited for 6.0.87 +// Audited for 6.5.4 // Status: Complete // ID: 59D15989E597719355BF0EAE6CB41FF9 (SwiftUI) -// ID: EAF68AEE5E08E2f44FEB886FE6A27001 (SwiftUICore) +// ID: EAF68AEE5E08E2F44FEB886FE6A27001 (SwiftUICore) package import OpenAttributeGraphShims @@ -108,9 +108,9 @@ private struct PairPreferenceCombiner: Rule, AsyncAttribute where K: Preferen } } -// MARK: - PreferencesAggregator +// MARK: - PreferenceAggregator -package struct PreferencesAggregator: Rule, AsyncAttribute where K: PreferenceKey { +package struct PreferenceAggregator: Rule, AsyncAttribute where K: PreferenceKey { package var attributes: [WeakAttribute] package init(attributes: [Attribute]) { diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceList.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceList.swift index 2a3c03b5e..76a02da9f 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceList.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceList.swift @@ -3,7 +3,7 @@ // OpenSwiftUICore // // Audited for 6.5.4 -// Status: Copmlete +// Status: Complete // ID: C1C63C2F6F2B9F3EB30DD747F0605FBD (SwiftUI) // ID: 7B694C05291EA7AF22785AB458D1BC2F (SwiftUICore) diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceTransformModifier.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceTransformModifier.swift index cca780e6d..519deb8a7 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceTransformModifier.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceTransformModifier.swift @@ -14,8 +14,6 @@ package import OpenAttributeGraphShims /// preference key. @available(OpenSwiftUI_v1_0, *) @frozen -@MainActor -@preconcurrency public struct _PreferenceTransformModifier: ViewModifier, MultiViewModifier, PrimitiveViewModifier where Key: PreferenceKey { /// The transform function to apply to `Key`. diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferenceWritingModifier.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferenceWritingModifier.swift index a5baf8080..cf92ff230 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferenceWritingModifier.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferenceWritingModifier.swift @@ -73,7 +73,10 @@ extension View { /// Sets a value for the given preference. @inlinable - public func preference(key: K.Type = K.self, value: K.Value) -> some View where K : PreferenceKey { + nonisolated public func preference( + key: K.Type = K.self, + value: K.Value + ) -> some View where K: PreferenceKey { modifier(_PreferenceWritingModifier(value: value)) } } diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferencesInputs.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferencesInputs.swift index d8599b6dc..de5c65684 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferencesInputs.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferencesInputs.swift @@ -2,7 +2,7 @@ // PreferencesInputs.swift // OpenSwiftUICore // -// Audited for 6.0.87 +// Audited for 6.5.4 // Status: Complete package import OpenAttributeGraphShims diff --git a/Sources/OpenSwiftUICore/Data/Preference/PreferencesOutputs.swift b/Sources/OpenSwiftUICore/Data/Preference/PreferencesOutputs.swift index 12ca4bbf2..ccefd1a15 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/PreferencesOutputs.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/PreferencesOutputs.swift @@ -2,12 +2,13 @@ // PreferencesOutputs.swift // OpenSwiftUICore // +// Audited for 6.5.4 // Status: Complete // ID: 639FD567E11A491423DEEA5A95A52B4C (SwiftUICore) package import OpenAttributeGraphShims -// MARK: - PreferencesOutputs [6.5.4] +// MARK: - PreferencesOutputs package struct PreferencesOutputs { private var preferences: [KeyValue] diff --git a/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift b/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift index e0f255178..3768f244b 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift @@ -2,7 +2,7 @@ // View_Indirect.swift // OpenSwiftUICore // -// Audited for 6.0.87 +// Audited for 6.5.4 // Status: Complete package import OpenAttributeGraphShims