From 930847bd12cf2bcdef71e8fc23c5e46a619b7969 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Mon, 9 Jun 2025 17:14:19 -0400 Subject: [PATCH 1/4] [Firebase AI] Make `GenerativeAIRequest.Response` `Sendable` --- FirebaseAI/Sources/GenerativeAIRequest.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebaseAI/Sources/GenerativeAIRequest.swift b/FirebaseAI/Sources/GenerativeAIRequest.swift index 4f3291e1913..148e989db40 100644 --- a/FirebaseAI/Sources/GenerativeAIRequest.swift +++ b/FirebaseAI/Sources/GenerativeAIRequest.swift @@ -16,7 +16,7 @@ import Foundation @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) protocol GenerativeAIRequest: Sendable, Encodable { - associatedtype Response: Decodable + associatedtype Response: Sendable, Decodable var url: URL { get } From cb0ead3889ea4010ed0a7b728c74e5e23f100ae7 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Mon, 9 Jun 2025 17:26:01 -0400 Subject: [PATCH 2/4] Add explicit `Sendable` conformance to remaining responses --- .../Sources/Types/Internal/Requests/CountTokensRequest.swift | 2 +- .../Sources/Types/Public/Imagen/ImagenGenerationResponse.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FirebaseAI/Sources/Types/Internal/Requests/CountTokensRequest.swift b/FirebaseAI/Sources/Types/Internal/Requests/CountTokensRequest.swift index dbd0049c457..ba3c082f297 100644 --- a/FirebaseAI/Sources/Types/Internal/Requests/CountTokensRequest.swift +++ b/FirebaseAI/Sources/Types/Internal/Requests/CountTokensRequest.swift @@ -38,7 +38,7 @@ extension CountTokensRequest: GenerativeAIRequest { /// The model's response to a count tokens request. @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) -public struct CountTokensResponse { +public struct CountTokensResponse: Sendable { /// The total number of tokens in the input given to the model as a prompt. public let totalTokens: Int diff --git a/FirebaseAI/Sources/Types/Public/Imagen/ImagenGenerationResponse.swift b/FirebaseAI/Sources/Types/Public/Imagen/ImagenGenerationResponse.swift index 48d14a79872..f9816908c6d 100644 --- a/FirebaseAI/Sources/Types/Public/Imagen/ImagenGenerationResponse.swift +++ b/FirebaseAI/Sources/Types/Public/Imagen/ImagenGenerationResponse.swift @@ -23,7 +23,7 @@ import Foundation @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) // TODO(#14451): Re-add "- ``ImagenModel/generateImages(prompt:gcsURI:)`` where `T` is // ``ImagenGCSImage``" in the DocC above. -public struct ImagenGenerationResponse { +public struct ImagenGenerationResponse: Sendable where T: Sendable { /// The images generated by Imagen; see ``ImagenInlineImage``. /// /// > Important: The number of images generated may be fewer than the number requested if one or From df1d21575bf9e38e1059cc547b67b2364659b250 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Mon, 9 Jun 2025 18:26:46 -0400 Subject: [PATCH 3/4] Make Imagen image types `Sendable` --- FirebaseAI/Sources/Types/Internal/Imagen/ImagenGCSImage.swift | 2 +- FirebaseAI/Sources/Types/Public/Imagen/ImagenInlineImage.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FirebaseAI/Sources/Types/Internal/Imagen/ImagenGCSImage.swift b/FirebaseAI/Sources/Types/Internal/Imagen/ImagenGCSImage.swift index 8715cbb12bd..030fe76c681 100644 --- a/FirebaseAI/Sources/Types/Internal/Imagen/ImagenGCSImage.swift +++ b/FirebaseAI/Sources/Types/Internal/Imagen/ImagenGCSImage.swift @@ -18,7 +18,7 @@ import Foundation /// /// TODO(#14451): Make this `public` and move to the `Public` directory when ready. @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) -struct ImagenGCSImage { +struct ImagenGCSImage: Sendable { /// The IANA standard MIME type of the image file; either `"image/png"` or `"image/jpeg"`. /// /// > Note: To request a different format, set ``ImagenGenerationConfig/imageFormat`` in diff --git a/FirebaseAI/Sources/Types/Public/Imagen/ImagenInlineImage.swift b/FirebaseAI/Sources/Types/Public/Imagen/ImagenInlineImage.swift index a526dca3e56..4f9a1d9d74f 100644 --- a/FirebaseAI/Sources/Types/Public/Imagen/ImagenInlineImage.swift +++ b/FirebaseAI/Sources/Types/Public/Imagen/ImagenInlineImage.swift @@ -16,7 +16,7 @@ import Foundation /// An image generated by Imagen, represented as inline data. @available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) -public struct ImagenInlineImage { +public struct ImagenInlineImage: Sendable { /// The IANA standard MIME type of the image file; either `"image/png"` or `"image/jpeg"`. /// /// > Note: To request a different format, set ``ImagenGenerationConfig/imageFormat`` in From 648fc602d065feb20738159994f3f3732e3c5b7c Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Mon, 9 Jun 2025 19:13:42 -0400 Subject: [PATCH 4/4] Add CHANGELOG entry --- FirebaseAI/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/FirebaseAI/CHANGELOG.md b/FirebaseAI/CHANGELOG.md index d7b7ac5536e..9b1ba5c782b 100644 --- a/FirebaseAI/CHANGELOG.md +++ b/FirebaseAI/CHANGELOG.md @@ -1,3 +1,6 @@ +# Unreleased +- [fixed] Fixed `Sendable` warnings introduced in the Xcode 26 beta. (#14947) + # 11.13.0 - [feature] Initial release of the Firebase AI Logic SDK (`FirebaseAI`). This SDK *replaces* the previous Vertex AI in Firebase SDK (`FirebaseVertexAI`) to