Symbol not found: __swift_registerConcurrencyStandardTypeDescriptors (Swift 5.9/DEV)

Swift 5.9 development snapshot does not run on Big Sur (11.7.7):

% xcrun --toolchain "org.swift.59202306051a" swift --version                
dyld: lazy symbol binding failed: Symbol not found: __swift_registerConcurrencyStandardTypeDescriptors
  Referenced from: /Library/Developer/Toolchains/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/bin/../lib/swift/macosx/libswift_Concurrency.dylib
  Expected in: /usr/lib/swift/libswiftCore.dylib

dyld: Symbol not found: __swift_registerConcurrencyStandardTypeDescriptors
  Referenced from: /Library/Developer/Toolchains/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/bin/../lib/swift/macosx/libswift_Concurrency.dylib
  Expected in: /usr/lib/swift/libswiftCore.dylib

Swift 5.8 (release) works fine though:

xcrun --toolchain "org.swift.580202303301a" swift --version
Apple Swift version 5.8 (swift-5.8-RELEASE)
Target: x86_64-apple-macosx11.0

This is a new symbol that was introduced in 5.9 and your concurrency dylib is referencing the stdlib/runtime that's in the operating system instead of the one included in the toolchain. Why swift --version has a dependency on Swift concurrency in the first place is interesting because I didn't think it did :thinking:

Is there any way to reference concurrency dylib from swift 5.9? I am building for simulator on Intel mac.

Updated to macOS 11.7.8 and the latest 5.9 dev snapshot, now I experience the following error:

% xcrun --toolchain "org.swift.59202307101a" swift --version
dyld: Symbol not found: __swift_tsan_acquire
  Referenced from: /Library/Developer/Toolchains/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-07-10-a.xctoolchain/usr/bin/../lib/swift/macosx/libswift_Concurrency.dylib
  Expected in: /usr/lib/swift/libswiftCore.dylib
 in /Library/Developer/Toolchains/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-07-10-a.xctoolchain/usr/bin/../lib/swift/macosx/libswift_Concurrency.dylib

Obviously some compatibility issue. I don't mind bundling swift core libs with the app if it's gonna make it run. Is there any way to fix this?

Simplest explanation is that Swift 5.9 doesn't support macOS 11. Indeed, Apple's tools haven't supported macOS 11 since Xcode 13.2.1 / Swift 5.5. So it's entirely possible things have broken since then.

Thanks for your reply. That's precisely what I have here. Swift 5.8 works great with Xcode 13.2.1 but I'd like to use macro support from 5.9. Sadly I cannot upgrade past macOS 11.x. Do you know if compiling 5.9 toolchain on my mac could solve this?

If the compiler now requires a symbol from Swift at runtime, and that symbol isn't available in your system Swift version, compiling locally seems unlikely to fix it, especially since your build environment is unsupported anyway. What's funny is that you can virtualize Linux and run Swift 5.9, though you won't get macro support until they enabled it on Linux.