-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Linux build failure -- error: cannot inherit from class 'NSLock' (compiled with Swift 6.0) because it has overridable members that could not be loaded in Swift 5.10 #2621
Comments
I figured there's a chance this is a regression out of swift-corelibs-foundation, so I filed a similar issue over there -- https://github.com/apple/swift-corelibs-foundation/issues/5076 If that doesn't go anywhere, this could in theory be resolved within RxSwift by refactoring away from |
Looks like this same failure is showing up in the swift package index testing: https://swiftpackageindex.com/builds/7B923645-D50A-4667-B129-33056F5C7599 |
Thanks for opening the issue! I noticed you've opened an issue on swiftlang/swift and also corelibs-foundations, so let's see what answers arise from there and we can decide on a path forward from there. |
Unfortunately no response from Apple's core team so far on this. |
(hoped I wouldn't have to use this label ever again) |
Yeah, hopefully we see some movement on it soon. I've added a Linux testing config to swiftlang's source-compat-suite: swiftlang/swift-source-compat-suite#951, in the hopes that Linux specific issues are caught sooner. Out of curiosity though, what are your thoughts about refactoring away from NSLock in AtomicInt in favor of some of the new Synchronization stuff in Swift 6? |
The only way to do that safely is with a compiler time conditional because we will still want to support older compilers. Which makes me worried we'll have to start supporting two families of locking mechanisms and the possible bugs that would stem from that. We could possibly change the data structure to not use a subclass and that seems like a more reasonable way to get this to work (ie wrapping it in a strict with some mirroring interface). I'll try finding some time to play with it. |
@clackary Check out the branch |
Looks like that branch (actually pushed as |
This is still blocking a few things for us. Since the foundation side fix seems to have stalled (swiftlang/swift-corelibs-foundation#5122), we'd like to push for a workaround if possible. The @freak4pc Do you have a preference for either workaround? I'd be happy to help with this. |
Import CoreFoundation as a temporary workaround ReactiveX#2621
Import CoreFoundation as a temporary workaround ReactiveX#2621 (cherry picked from commit dd99c36)
This workaround can be removed if/when the root cause is resolved in Foundation: swiftlang/swift-corelibs-foundation#5108 ...or when RxSwift has merged a workaround on its side: ReactiveX/RxSwift#2621
Short description of the issue:
RxSwift fails to build on Ubuntu 22.04 against 2024-07-22 nightly Swift toolchains (and newer).
Expected outcome:
Top of RxSwift main (also reproduced with 6.5.0) builds successfully against 2024-07-15 toolchain, but starting failing against newer toolchains, as of 2024-07-22 and later.
What actually happens:
Self contained code example that reproduces the issue:
Build errors are thrown out of
Sources/RxSwift/AtomicInt.swift
, but it also reproduces with a simple inherit from NSLock.RxSwift/RxCocoa/RxBlocking/RxTest version/commit
6491a16
Platform/Environment
How easy is to reproduce? (chances of successful reproduce after running the self contained code)
Xcode version:
Installation method:
I have multiple versions of Xcode installed:
(so we can know if this is a potential cause of your issue)
Level of RxSwift knowledge:
(this is so we can understand your level of knowledge
and formulate the response in an appropriate manner)
The text was updated successfully, but these errors were encountered: