-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Stop using -sil-serialize-all when building the standard library #12191
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
Stop using -sil-serialize-all when building the standard library #12191
Conversation
9fb4806
to
aefe48f
Compare
@swift-ci please smoke test |
@swift-ci please smoke benchmark |
@swift-ci Please Test Source Compatibility |
Oops:
|
Yeah, I'm looking into it. I was testing with the no-asserts compiler and haven't noticed it locally. Should be easy to fix though |
Build comment file:Optimized (O)Regression (4)
Improvement (87)
No Changes (238)
Unoptimized (Onone)Regression (1)
Improvement (100)
No Changes (228)
Hardware Overview
|
@swift-ci please smoke test |
1 similar comment
@swift-ci please smoke test |
@swift-ci please test |
1 similar comment
@swift-ci please test |
Build failed |
Build failed |
@swift-ci please clean test |
Build failed |
Build failed |
Disabled the failing test while I investigate the underlying issue in swiftpm's test configuration: |
This option needs to be used if vtables should be serialized. The primary use-case for this option is when you build the standard library.
We can finally get rid of -sil-serialize-all when building the standard library! This option will be completely eliminated in the future commits. Instead of serializing just everything as we did before, we now serialize only functions annotated with @_inlineable. This way we can selectively control what needs to be available to the clients. This is an important step towards building a resilient standard library. While this is a huge change for the serialization of the stdlib, it should be virtually invisible to the clients. For example, there are no noticeable performance regressions on any of the benchmarks.
Since the bodies of pre-specializaitons are not serialized, do not use the `[serialized]` attribute for them.
rdar://problem/34758773
cab691e
to
a136d59
Compare
@swift-ci please test |
1 similar comment
@swift-ci please test |
@swift-ci Please Test Source Compatibility |
1 similar comment
@swift-ci Please Test Source Compatibility |
@swift-ci please smoke benchmark |
@swift-ci Please Test Source Compatibility |
@swift-ci please smoke benchmark |
@swift-ci please test |
Source Compatibility Suite failures are unrelated. |
Build comment file:Optimized (O)Regression (2)
Improvement (145)
No Changes (182)
Unoptimized (Onone)Regression (2)
Improvement (23)
No Changes (304)
Hardware Overview
|
Congrats! |
That's really awesome! |
We can finally get rid of
-sil-serialize-all
when building the standard library! This option will be completely eliminated in the future commits.Instead of serializing just everything as we did before, we now serialize only functions annotated with
@_inlineable
. This way we can selectively control what needs to be available to the clients. This is an important step towards building a resilient standard library.While this is a huge change for the serialization of the stdlib, it should be virtually invisible to the clients. For example, there are no noticeable performance regressions on any of the benchmarks.
Big thanks to @moiseev, who annotated the whole library with
@_inlineable
attributes.