OpenTimelineIO-Swift-Bindings icon indicating copy to clipboard operation
OpenTimelineIO-Swift-Bindings copied to clipboard

Support swift 5.9 with minimum 5.5 compatibility.

Open furby-tm opened this issue 1 year ago • 2 comments

Summarize your change.

Support Swift 5.9, visionOS 1.0+, and a minimum iOS version of 12.

Add a list of changes, and note any that might need special attention during review.

  • Created a new Swift Package manifest for backwards compatibility with Swift 5.5 and older.
  • Bumped the existing Swift Package manifest to support a minimum of Swift 5.9 (the minimum required for Swift/C++ interop), visionOS 1.0 and later, and a minimum iOS version of 12.

Reference associated tests.

  • All tests pass.

furby-tm avatar Sep 27 '24 07:09 furby-tm

Noted by @jchen9 - this is likely necessary to use the cross-platform (Linux included) CGRect type (reference).

This version bump is required to be able to begin deprecating the Objective-C bindings and support Swift/C++ interop, and making this Swift Package available for the Linux platform, immediately this change should now allow us to support visionOS.

furby-tm avatar Sep 27 '24 07:09 furby-tm

Screenshot 2024-09-27 at 2 50 03 AM

I've also targeted the visionOS platform, and verified this Swift Package builds successfully for that platform.

furby-tm avatar Sep 27 '24 08:09 furby-tm

2 Quick question about this PR

swift-tools-version is set to 6.0 in the package, not 5.9 (i know the tools and the swift version differ, but i think in this invocation you do actually target swift 6.0?) as

I think because https://developer.apple.com/documentation/packagedescription/package/swiftlanguageversions

is deprecated , if we want swift 5.9 we should mark the tools version as well, otherwise you'll get the latest on your system?

   platforms: [
       .macOS(.v14),
       .visionOS(.v1),
       .iOS(.v17),
       .tvOS(.v17),
       .watchOS(.v10),

Does this impact deployment scenarios for clients in any way (I do see the 5.5 package remains) - im mostly curious if the package requires these more modern os versions, or if it can be relaxed?

vade avatar Mar 28 '25 23:03 vade

@vade sorry about that, I was doing a bunch of c++ interop tests and forgot this PR was still open, reverted all changes to the original intention of this revision, which is simply to support swift 5.9 for future c++ interop work as well as visionOS platform support, along with backwards compatibility with swift 5.5+

furby-tm avatar Mar 31 '25 00:03 furby-tm