pointfreeco / swift-composable-architecture

A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind.
https://www.pointfree.co/collections/composable-architecture
MIT License
12.35k stars 1.44k forks source link

Stable ABI support #3422

Closed mishashemin closed 2 weeks ago

mishashemin commented 2 weeks ago

Description

Hello, we are using TCA in our sdk for distribution. The SDK is being built into a single static framework with swift-evolution support.

Until recently, everything was fine, but we had to update version 1.12.1 -> 1.15.0 to support xcode 16. After this update, our framework stopped being built due to xctest-dynamic-overlay

/.build/SourcePackages/checkouts/xctest-dynamic-overlay/Sources/IssueReporting/ReportIssue.swift:37:3: error: switch covers known cases, but 'TestContext?' may have additional unknown values, possibly added in future versions
  switch TestContext.current {
  ^
/build/.build/SourcePackages/checkouts/xctest-dynamic-overlay/Sources/IssueReporting/ReportIssue.swift:37:3: note: add missing cases
  switch TestContext.current {
  ^

Please fix this problem. As a temporary measure, we had to turn off support for swift-evolution, but we really want to bring it back.

Checklist

Expected behavior

No errors when building the framework with the BUILD_LIBRARY_FOR_DISTRIBUTION flag enabled

Actual behavior

Errors when building a framework with the BUILD_LIBRARY_FOR_DISTRIBUTION flag enabled

Reproducing project

No response

The Composable Architecture version information

1.15.0

Destination operating system

No response

Xcode version information

No response

Swift Compiler version information

No response

mbrandonw commented 2 weeks ago

Hi @mishashemin, the issue has been fixed (see https://github.com/pointfreeco/swift-issue-reporting/pull/133), but just not released yet. We will do that later today.

Also, just want to remind you that we do not guarantee ABI stability in any of our libraries. At the request of some of users we have made changes to our libraries to make sure it builds with library evolution turned on, but it's a "use at your own risk" kind of situation. You will need to recompile the library from scratch anytime you update. Just want to make sure that's clear.

Since this isn't an issue with the library I am going to convert it to a discussion. Please feel free to continue the conversation over there!