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">&lt;<a hr=
ef=3D"mailto:[email protected]" target=3D"_blank">robert.w.withers=
@gmail.com</a>&gt;</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&#39;t think I understand the scenar=
io that&#39;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&#39;s vat, the DelayedRedirec=
tor is resolved to the RemotePromise of the call to Bob, the return of Alic=
e&#39;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&#39;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&#39;s a different export &quot;polarization&quot; 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==--