-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Distributed] Support complex generic distributed actors in thunk gen #70842
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
[Distributed] Support complex generic distributed actors in thunk gen #70842
Conversation
033d1ae
to
7fc1ac4
Compare
6f77e86
to
20b1f6d
Compare
a1c890c
to
76c9e19
Compare
Okey finally managed to have this all correct -- thank you for the help @xedin @slavapestov ! |
@swift-ci please smoke test |
Heh, while this works locally on apple silicon it seems both linux and mac CI are not happy and we hit:
Which seems like a null type -- probably the actor type; since yes we do not pass it a witness, perhaps that is the issue? Back to the investigation... |
5aa85cc
to
8bcf07c
Compare
/*decoderWitnessTable=*/void **), | ||
/*actorType=*/Metadata *, | ||
/*decoderWitnessTable=*/void **, | ||
/*distributedActorWitnessTable=*/void ** |
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 mismatch was a lot of "fun" (not) to debug.
Thank you @xedin for the help debugging here 🙏
8bcf07c
to
79005d5
Compare
@swift-ci please test |
macos had a git failure |
@swift-ci please test macOS |
@swift-ci please smoke test |
@swift-ci please test |
@swift-ci please test |
@swift-ci please smoke test |
@swift-ci please smoke test Windows |
1 similar comment
@swift-ci please smoke test Windows |
@swift-ci please smoke test |
Finally complete our adventure with generics and distributed thunks.
Description: Distributed thunks still incorrectly handled more complex generics cases, where the distributed func would use a generic type that had requirements on the enclosing actor type.
This corrects how distributed thunks use generics, i.e. we don't carry generic parameters over at all. A distributed thunk does not have to have the same generic signature as the target; all the types are fully substituted and the only generic parameters we need to carry over are the
InvocationDecoder
and the actor type.Risk: Low, affects only more complex distributed actors with generics. The fix is well understood and tested.
Review by: @xedin @slavapestov
Testing: CI testing, added exact reproducer test for the complex scenarios.
Radar: rdar://115497090
Resolves: the final part of #68517