Skip to content

[6.0] Use "resilient conformance" logic for deciding protocol dependencies involving Sendable #76708

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

DougGregor
Copy link
Member

@DougGregor DougGregor commented Sep 25, 2024

  • Explanation: When compiling with library evolution and a pre-Swift 6.0 deployment target, a mismatch between the notion of resilience used for determining whether a protocol that inherits Sendable might need to be treated as "dependent" differed from how other parts of IR generation decided whether to conformance should be considered as resilient. The difference came when both the protocol and its conforming type are in the same module as the user. Switch over to the "is this conformance resilient?" query that takes into account such conformances.
  • Scope: Affects binaries that use conformances of Sendable-conforming protocols, use library evolution, and are buil for deployment targets that predate Swift 6.0.
  • Issues: rdar://136586922
  • Original PRs: Use "resilient conformance" logic for deciding protocol dependencies involving Sendable #76707
  • Risk: Low. This is further narrowing from [6.0.1] Fix ABI mismatch involving Sendable-refining non-resilient protocols and deployment targets #76384.
  • Testing: Tested against an affected project, plus new tests
  • Reviewer: @aschwaighofer

…involving Sendable

When compiling with library evolution and a pre-Swift 6.0 deployment
target, a mismatch between the notion of resilience used for determining
whether a protocol that inherits Sendable might need to be treated as
"dependent" differed from how other parts of IR generation decided
whether to conformance should be considered as resilient. The
difference came when both the protocol and its conforming type are in
the same module as the user.

Switch over to the "is this conformance resilient?" query that takes
into account such conformances.

Fixes rdar://136586922.
@DougGregor DougGregor requested a review from a team as a code owner September 25, 2024 19:11
@DougGregor
Copy link
Member Author

@swift-ci please test

@DougGregor DougGregor merged commit 506b3f8 into swiftlang:release/6.0 Sep 26, 2024
5 checks passed
@DougGregor DougGregor deleted the sendable-conformance-evolution-old-deployment-6.0 branch September 26, 2024 16:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants