-
Notifications
You must be signed in to change notification settings - Fork 226
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
move method name into serialized message data, rather than separate field #2481
Comments
Does anyone mind if I expand/refine this to "swingset+comms should accept Symbol-named method names"? Being able to send Symbols through the kernel/comms in arguments is one thing, but the real issue that affected #2092 was the inability to use them as method names (which are treated specially). @erights ? |
Fine with me. Please do. Btw, I thought they were already fine over comm and were only a problem through the SwingSet kernel. Wrong? |
Sending Symbols as arguments over comms is fine, but using a Symbol as a method name runs into the same (actually more) problems as it does in the kernel. |
Ok this ticket is now about:
Some of the kernel-side changes are merely documentation and type definitions: the kernel itself only unpacks the
|
I suggest |
Liveslots special-cases this one symbol by converting it into a (string) method name of `"Symbol.asyncIterator"` for `syscall.send`, and back again during `dispatch.deliver`. This has several limitations: * no other Symbols are accepted yet * `E(target)[Symbol.asyncIterator](args)` and `E[target]['Symbol.asyncIterator'](args)` will invoke the same target method, which is clearly wrong * a method named `'Symbol.asyncIterator'` (as a string) cannot be invoked remotely This should all be fixed someday by #2481. closes #2619
I suggest we discuss whether this is a real block for MN-1. (If it must be done eventually, how bad would the upgrade path be?) |
Changes message encoding to eliminate the `method` field and move its contents into the `args` capdata object (now renamed `methargs`) so that the method name will be serialized, allowing non-string values (notably symbols) to be used as method selectors (and also eventually to allow remote function call, i.e., no method selector at all, to be supported). refs #2481
Changes message encoding to eliminate the `method` field and move its contents into the `args` capdata object (now renamed `methargs`) so that the method name will be serialized, allowing non-string values (notably symbols) to be used as method selectors (and also eventually to allow remote function call, i.e., no method selector at all, to be supported). refs #2481
Changes message encoding to eliminate the `method` field and move its contents into the `args` capdata object (now renamed `methargs`) so that the method name will be serialized, allowing non-string values (notably symbols) to be used as method selectors (and also allow remote function call, i.e., no method selector at all, to be supported). refs #2481
Changes message encoding to eliminate the `method` field and move its contents into the `args` capdata object (now renamed `methargs`) so that the method name will be serialized, allowing non-string values (notably symbols) to be used as method selectors (and also allow remote function call, i.e., no method selector at all, to be supported). refs #2481
Blocking #2092
Blocking our use of
subscription
s. We're using `notifier's where we should be using descriptors because of this.@warner explains possible solutions at
#2092 (comment)
and
#2092 (comment)
The text was updated successfully, but these errors were encountered: