Skip to content

Conversation

@pblazej
Copy link
Contributor

@pblazej pblazej commented Oct 14, 2025

Resolves #731
Resolves #790

Fixes the library evolution build failure by replacing protocols with Self requirements (which cannot form a stable ABI) with protocol composition typealiases that provide a concrete existential type the compiler can support.

Protocols with Self or associated type requirements cannot form a stable ABI because the compiler cannot create a generic, fixed-size storage container (an "existential") for them, as the concrete size and layout of the conforming type are unknown at the API boundary, making forward-compatible memory management and function dispatch impossible.

This is a breaking change ⚠️ for anyone e.g. extending the current hierarchy:

extension VideoTrack // vs
extension Track

This should NOT be a breaking change for just consuming concrete types returned e.g. from factory methods in the SDK.

@github-actions
Copy link

⚠️ This PR does not contain any files in the .changes directory.

@pblazej
Copy link
Contributor Author

pblazej commented Oct 14, 2025

Copy link
Member

@hiroshihorie hiroshihorie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

@pblazej pblazej merged commit 92e2231 into main Oct 16, 2025
57 of 67 checks passed
@pblazej pblazej deleted the blaze/xcframework branch October 16, 2025 06:07
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.

XCFramework build fails with SwiftEmitModule errors for Logging/LiveKit Compiled XCFramework required

3 participants