<br><div class="gmail_quote">On Sat, Aug 1, 2009 at 4:59 PM, Ian Hickson <span dir="ltr">&lt;<a href="mailto:ian@hixie.ch">ian@hixie.ch</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Wed, 22 Jul 2009, Daniel Gredler wrote:<br>
&gt;<br>
&gt; First, why does the structured clone algorithm used by postMessage() [1]<br>
&gt; throw an exception if it encounters cycles? It seems to me that the<br>
&gt; memory-based logic which is used to catch cycles could easily be<br>
&gt; modified to resolve them instead. The only possible reason I can think<br>
&gt; of is to match JSON semantics, and the only reason I can think of to<br>
&gt; want to match JSON semantics is to make implementers lives easier<br>
&gt; (witness Firefox 3.5, which just JSONifies objects passed to<br>
&gt; postMessage()). However, this is a huge limitation, and I&#39;m not sure<br>
&gt; that the correct trade-off is to make implementers lives easier at the<br>
&gt; expense of making web designers lives harder.<br>
<br>
</div>Your guess is correct. I imagine we&#39;ll lift the restriction eventually; if<br>
you want to make that happen quicker, then I encourage you to speak<br>
directly to the browser vendors implementing this, and convince them it&#39;d<br>
be worth it. :-)<br><div></div></blockquote><div><br><br>I know Anne VK (Opera) and ROC (Mozilla) appear to read this list... any comments, guys? Should I just file bugs? Any Safari / Chrome / IE guys out there with comments?<br>
<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
&gt; Second, why not walk the prototype chain? Similar rules regarding host<br>
&gt; objects and regular objects could apply to prototypes. You would want to<br>
&gt; make sure that multiple references to the same prototype instance result<br>
&gt; in references to a single prototype clone in the cloned object graph.<br>
&gt; Again, though, it doesn&#39;t sound too hard (though I might just be<br>
&gt; optimistic). Why not make web designers&#39; lives easier?<br>
<br>
</div>We&#39;re definitely never going to copy function code over, so it&#39;s not clear<br>
that the prototype chain would be that useful. Could you elaborate on your<br>
use case?<br>
<div class="im"></div></blockquote><div><br><br>I agree that once you&#39;ve made the decision to not clone functions, cloning the prototype chain becomes (nearly?) useless. However, I&#39;d be interested to know the rationale behind this decision, since Web Workers appear to follow the same-origin policy (e.g. &quot;If the origin of the resulting absolute URL is not the same as the origin of the script that invoked the constructor, then throw a security exception&quot;, etc). I assume there&#39;s a security concern lurking somewhere?<br>
<br>My specific use case spits out a tree, each node having a reference to its children and its parent (hence the issue with circular references). Each node also has a &quot;name&quot; attribute and a function (in the prototype) used to retrieve the node&#39;s &quot;path&quot; (based on its name and its ancestors names) -- I don&#39;t want to precalculate each node&#39;s path and keep it in memory, given that there are tens of thousands of nodes (or more).<br>
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
&gt; Overall, it just appears that the current web worker spec ignores the<br>
&gt; class of computational problems involving results which need to be<br>
&gt; modeled in a complex way.<br>
<br>
</div>That&#39;s probably a fair criticism, yes.<font color="#888888"><br>
</font></blockquote></div><br><br>Then I&#39;ll see if I can&#39;t raise some awareness amongst implementers ;-)<br><br clear="all"><br>-- <br>Daniel Gredler<br><a href="http://daniel.gredler.net/">http://daniel.gredler.net/</a><br>