-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Adding the Backdeploy 5.6 compatibility library #60368
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
This patch gets everything to the point of building the library, but it doesn't run yet since I have missing symbols. Unlike previous compatibility libraries and the concurrency compatibility library, I'm organizing the headers a bit more. This is because we're merging the two libraries into one. They share some common header names, and while I could rename them for namespacing purposes, it's easier to just use a directory structure for this. The `include/Runtime` and corresponding `Runtime/` directories are for backdeployed changes to the stdlib itself. The `include/Concurrency` and corresponding `Concurrency/` directories are for backdeployed changes to the concurrency runtimes.
This patch removes the implementation implementations and just calls the original symbol without the fixes. This allows the library to build and for binaries to link against it without breaking anything with missing symbols.
@swift-ci please test |
Also, if someone knows how to actually test these backdeploy libraries with anything beyond "it compiles, ship it", I'm all ears. |
This patch updates the concurrency backdeployment test to handle the inclusion of the Swift 5.6 compatibility library. macOS12 will have the 5.6 library applied to it, so the _swift_FORCE_LOAD_$_swiftCompatibility56 symbol is defined weakly.
@swift-ci please test |
Updated the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This LGTM. I'm sure the contents of the compatibility library will shift around a bit as we start implementing the compatibility fixes, but the structure, build model, and linking here all look 💯.
This PR starts adding the stubs for the Swift 5.6 back deployment compatibility library.
At this time it adds the ability to set the
-runtime-compatibility-version
to5.6
in order to link the compatibility library, and declares two symbols for theswift_task_future_wait
andswift_task_future_wait_throwing
function replacements.These functions currently just forward the call to the original implementation.
I have checked that this library is actually used by running
then inspecting and executing the resulting binary.