embrace-io / embrace-apple-sdk

Embrace's Swift SDK built on OpenTelemetry
https://embrace.io/docs/ios/
Apache License 2.0
117 stars 11 forks source link

Migrate to Swift 6 #104

Open edorphy opened 1 month ago

edorphy commented 1 month ago

The SDK should be audited against strict concurrency mode for Swift 6 and be free of warnings and errors.

Please embrace Swift 6 concurrency language features.

Presently, the very first lines of code from the main readme introduce concurrency warnings. I'm sure this is in many places. Image

https://developer.apple.com/documentation/Swift/AdoptingSwift6 https://www.swift.org/migration/documentation/migrationguide/

ArielDemarco commented 1 month ago

Hey @edorphy! We're planning on that. We'll be creating a branch to start incorporating Swift 6 features. That said, we don't plan on upgrading the requirements soon (i.e., changing the // swift-tools-version: in Package.swift to 6). Doing so would force consumers of the SDK to upgrade, which is something we prefer to avoid at the moment.

edorphy commented 1 month ago

@ArielDemarco

You could explore creating a secondary Package.swift file using the 'version-specific manifest selection' feature of SPM: https://github.com/swiftlang/swift-package-manager/blob/main/Documentation/Usage.md#version-specific-manifest-selection

This would enable adopting customers to embrace and get all of the Swift 6 declaration benefits while allowing other customers to fallback onto an earlier version. With respect to the Swift toolchain version in the repo right now it is specified as 5.7 but releasing an app with Xcode 15 has a minimum Swift version of 5.9. Perhaps you have customers that do ad-hoc releases and older versions of Xcode.

I'll make a separate issue for visionOS support, which would require toolchain 5.9 as a minimum.