Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
"Mark S. Miller" <[email protected]> Sun, 8 Mar 2015 16:58:20 -0700
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <CABHxS9jDZvUtMr5LtPJ65DWSip9bwxzfx0LpGbd_E2auPPfVgw@mail.gmail.com> |
--===============8118620116744950335== Content-Type: multipart/alternative; boundary=047d7bd75b342d7f2b0510cfb110 --047d7bd75b342d7f2b0510cfb110 Content-Type: text/plain; charset=UTF-8 On Sun, Mar 8, 2015 at 7:33 AM, Rob Withers <[email protected]> wrote: > I had not realized I had posed such a challenging situation. In mulling > over what needs to happen, I think the followOn message send (#hashCode) > needs to be a 3-vat situation, *of the Resolver*, to prevent GC. Here > are the steps I think are needed, #6 being the point where my system is > failing, due to its absence? > Hi Rob, I don't think I understand the scenario that's driving this. I went back to the beginning of the thread and found > On 2/22/2015 6:19 PM, Rob Withers wrote: > > I am stuck, both conceptually, as well as understanding code I wrote a > long while ago. I was hoping to gain a little insight from the list of the > insides of resolution redirection in the 3-way case. The recent change I > have made results from my thinking I finally understand the ordering that > MirandaMethods ensure. I made changes such that a whenMoreResolved > directly follows the message that generates is by adding to the front of > the msg queue. > > In the 3-way case, Carol is sending a message to Alice, passing Bob. > Alice receives the message and executes, which sends a message to Bob, then > returns the result to Carol. In Alice's vat, the DelayedRedirector is > resolved to the RemotePromise of the call to Bob, the return of Alice's > computation and I think it sends whenMoreResolved to the proxy of the new > promise resolver of the send to Bob. What little tracing I have I am > posting below, as well as the DelayedRedirector value() and the > ProxyResolver resolve() code, at the bottom. However, this is my question, > what should the redirector do in Alice's Vat to propagate the resolution > from Bob, back to Carol? > > Thank you, > - Robert > > > // There are 3 messages sent to Bob, from Alice: > // 1) getTheAnswer, which returns 42, > // 2) *hashCode, again 42* and > // 3) *whenMoreResolved*, to forward to the redirector back in Alice. > > which still seems to start in the middle, or I may be misunderstanding. What does the user code do, in what initial conditions, that set the rest of this scenario in motion? > > 1. Carol sends #redirectForTheAnswer to Alice::GalaxyObject with a ref > to Bob::GalaxyObject, returning a RemotePromise1 > 2. Carol sends #hashCode to the RemotePromise1 from the first send, > which forwards to the Promise in Alice, where it is queued. > 3. 3-way: Carol sends a ProvideFor to Bob and Alice sends an > AcceptFrom to Bob, so Alice resolves Bob::GalaxyObject. > 4. Alice::GalaxyObject, under computation of #redirectForTheAnswer, > sends #getTheAnswer to Bob::GalaxyObject, returning a RemotePromise2, in > Alice, from #redirectForTheAnswer. > 5. The pending #hashCode send is sent to the RemothePromise2, in > Alice, which points to Bob. > 6. 3-way: In Alice, the redirected #hashCode ought to become a 3-way > for the Resolver in Carol, for the intial #hashCode send. Alice would send > a ProvideFor to Carol, for that Resolver and Bob would send an AcceptFrom > to Carol to gain a FarRef to the Resolver. > 7. Bob::GalaxyObject, under computation of #hashCode, returns the > value 42. > 8. Bob sends the pending #hashCode to 42, and resolves the gift > Resolver. > > I believe the tricky thing is that it is the Resolver which is gifted, so > it's a different export "polarization" of the minigraph for a remote send > that has been forwarded. > > Thank you, > Robert > > -- Cheers, --MarkM --047d7bd75b342d7f2b0510cfb110 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo= te">On Sun, Mar 8, 2015 at 7:33 AM, Rob Withers <span dir=3D"ltr"><<a hr= ef=3D"mailto:[email protected]" target=3D"_blank">robert.w.withers= @gmail.com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(20= 4,204,204);border-left-style:solid;padding-left:1ex"> =20 =20 =20 <div bgcolor=3D"#FFFFFF" text=3D"#000000"> I had not realized I had posed such a challenging situation.=C2=A0 In mulling over what needs to happen, I think the followOn message send (#hashCode) needs to be a 3-vat situation, <b>of the Resolver</b>, to prevent GC.=C2=A0 Here are the steps I think are needed, #6 being th= e point where my system is failing, due to its absence? <br></div></block= quote><div><br></div><div>Hi Rob, I don't think I understand the scenar= io that's driving this. I went back to the beginning of the thread and = found</div><div><br></div><div><blockquote type=3D"cite"><div class=3D"gmai= l_extra"><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(20= 4,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor=3D"#FFFFF= F" text=3D"#000000"><div><br class=3D"">On 2/22/2015 6:19 PM, Rob Withers w= rote:<br></div><blockquote type=3D"cite">I am stuck, both conceptually, as = well as understanding code I wrote a long while ago.=C2=A0 I was hoping to = gain a little insight from the list of the insides of resolution redirectio= n in the 3-way case.=C2=A0 The recent change I have made results from my th= inking I finally understand the ordering that MirandaMethods ensure.=C2=A0 = I made changes such that a whenMoreResolved directly follows the message th= at generates is by adding to the front of the msg queue.=C2=A0=C2=A0<br><br= >In the 3-way case, Carol is sending a message to Alice, passing Bob.=C2=A0= Alice receives the message and executes, which sends a message to Bob, the= n returns the result to Carol.=C2=A0 In Alice's vat, the DelayedRedirec= tor is resolved to the RemotePromise of the call to Bob, the return of Alic= e's computation and I think it sends whenMoreResolved to the proxy of t= he new promise resolver of the send to Bob.=C2=A0 What little tracing I hav= e I am posting below, as well as the DelayedRedirector value() and the Prox= yResolver resolve() code, at the bottom.=C2=A0 However, this is my question= , what should the redirector do in Alice's Vat to propagate the resolut= ion from Bob, back to Carol?<br><br>Thank you,<br>- Robert<br><br><br>// Th= ere are 3 messages sent to Bob, from Alice:<br>// =C2=A0=C2=A0=C2=A0 1) get= TheAnswer, which returns 42,=C2=A0<br>// =C2=A0=C2=A0=C2=A0 2)=C2=A0<b>hash= Code, again 42</b>=C2=A0and=C2=A0<br>//=C2=A0=C2=A0 =C2=A0 3)=C2=A0<b>whenM= oreResolved</b>, to forward to the redirector back in Alice.<br></blockquot= e></div></blockquote></div></div></blockquote></div><div><br></div><div>whi= ch still seems to start in the middle, or I may be misunderstanding. What d= oes the user code do, in what initial conditions, that set the rest of this= scenario in motion?</div><div><br></div><div><br></div><div>=C2=A0</div><b= lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le= ft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pad= ding-left:1ex"><div bgcolor=3D"#FFFFFF" text=3D"#000000"> <ol> <li>Carol sends #redirectForTheAnswer to Alice::GalaxyObject with a ref to Bob::GalaxyObject, returning a RemotePromise1</li> <li>Carol sends #hashCode to the RemotePromise1 from the first send, which forwards to the Promise in Alice, where it is queued.<br> </li> <li>3-way: Carol sends a ProvideFor to Bob and Alice sends an AcceptFrom to Bob, so Alice resolves Bob::GalaxyObject.</li> <li>Alice::GalaxyObject, under computation of #redirectForTheAnswer, sends #getTheAnswer to Bob::GalaxyObject, returning a RemotePromise2, in Alice, from #redirectForTheAnswer.</li> <li>The pending #hashCode send is sent to the RemothePromise2, in Alice, which points to Bob.</li> <li>3-way: In Alice, the redirected #hashCode ought to become a 3-way for the Resolver in Carol, for the intial #hashCode send.=C2=A0 Alice would send a ProvideFor to Carol, for that Resolver and Bob would send an AcceptFrom to Carol to gain a FarRef to the Resolver.</li> <li>Bob::GalaxyObject, under computation of #hashCode, returns the value 42.</li> <li>Bob sends the pending #hashCode to 42, and resolves the gift Resolver. </li> </ol> I believe the tricky thing is that it is the Resolver which is gifted, so it's a different export "polarization" of the = minigraph for a remote send that has been forwarded. <br> <br> Thank you,<br> Robert<br> <br> </div> </blockquote></div><br clear=3D"all"><div><br></div>-- <br><div class=3D"gm= ail_signature">=C2=A0 =C2=A0 Cheers,<br>=C2=A0 =C2=A0 --MarkM</div> </div></div> --047d7bd75b342d7f2b0510cfb110-- --===============8118620116744950335== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ e-lang mailing list [email protected] http://www.eros-os.org/mailman/listinfo/e-lang --===============8118620116744950335==--