<br><br><div class="gmail_quote">On Fri, Mar 18, 2011 at 4:26 PM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com">brendan@mozilla.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Mar 18, 2011, at 9:25 AM, Wes Garland wrote:<br>
<br>
> Right: the barrier to setTimeout functionality is that ECMAscript does not define a concurrency model.<br>
><br>
> If we can define a concurrency model, then we can build setTimeout.<br>
<br>
</div>See my previous reply. JS with setTimeout has only pseudo-concurrency via time-deferred script executions or function calls. There's nothing concurrent in a racy sense there.<br>
<div class="im"><br>
<br>
> Two things off the top of my head to consider:<br>
>  - timer granularity<br>
<br>
</div>This is an interop issue, mostly due to stupid benchmarks that degenerate to measuring whether the browser clamps at 10ms or 4ms. It is also now a standard: 4ms.<br>
<br>
Various implementors have found that setTimeout(f, 0) that calls f immediately "breaks the web" (or at least the New York Times site). Similarly, waiting an event loop turn seems to break the web. By testing, 4ms has been arrived at. I welcome fresher data.<br>
</blockquote><div><br></div><div>Is this 4ms codified in spec language somewhere? I couldn't find it by casual searching.</div><div><br></div><div>What about setTimeout(thunk, 0.00001) ? In other words, is the rule</div>
<div><br></div><div>    actualTimeout = max(requestedTimeout, 4)</div><div><br></div><div>or</div><div><br></div><div>    actualTimeout = requestedTimeout || 4</div><div><br></div><div>?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
<br>
>  - forbidding eval-like syntax<br>
<br>
What problem are you solving?<br>
<div class="im"><br>
<br>
> OTOH, if we have an event-loop system with conditionals, we might not need setTimeout because it would be trivial to build from primitives. But it might be a handy interface if ES starts to go toward the "batteries included" model.<br>

<br>
</div>What do you mean by conditionals? If you mean condition variables, JS will never grow to include shared-mutable-state threads. That would happen not only over my dead body, but the rest of TC39's. We'd fight back, so watch out.<br>
</blockquote><div><br></div><div>+1. Add my body to that list ;).</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888"><br>
/be<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>    Cheers,<br>    --MarkM<br>