On Thu, Jul 2, 2009 at 1:40 PM, Karp, Alan H <span dir="ltr"><<a href="mailto:alan.karp@hp.com">alan.karp@hp.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link="blue" vlink="purple" lang="EN-US">
<div><div class="im">
<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">MarkM wrote:</span></p>
<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>
<p style="margin-left: 0.5in;">While it is true that the infinite
loop example only applies within a vat, E's distributed semantics require
unbounded message buffering in the same sense in which its local semantics
requires unbounded heap and stack. Unbounded buffering requirements do not
normally prevent a protocol from claiming "liveness", FWIW.<br>
<br>
</p>
</div><p>Does that mean buffering on the sender side is better for
defensive correctness?<br>
</p></div></div></blockquote><div>yes. Similarly, and more practically, bounding the receiver side buffer to a memory budget specific to a given sender, and doing sender side buffering when exceeding that limit is better... But one must be careful to account not only for the messages themselves, but also all the other bookkeeping memory that one side of a connection can force the other side to use. This harkens back to Shap's criticism of membranes -- there are no good answers to who pays for the memory. My guess is that Shap's "good" here probably translates into a defensive correctness requirement (and therefore inability) for normal uses of membranes.<br>
</div></div><br>-- <br>Text by me above is hereby placed in the public domain<br><br> Cheers,<br> --MarkM<br><br>