On Wed, Sep 2, 2009 at 11:31 AM, Jeremy Orlow <span dir="ltr"><<a href="mailto:jorlow@chromium.org">jorlow@chromium.org</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div>Does the silence mean that no one has any intention of implementing this?</div></div></blockquote><div><br>I'm silent because I'm not currently working on this stuff so I can't say what our plans are. But I'll be upset if I find out our plans are to break the single-threaded model.<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>Alternatively, we could make it so that each statement is atomic, but that you have to use such a mechanism for anything more complicated. For example:</div>
<div><br></div><div>localStorage.accountBalance = localStorage.accountBalance + accountDelta;  // It's atomic, so no worries!</div>

<div>var balance = localStorage.accountBalance;  /* Oh no!!!!  This isn't safe since it's implemented via multiple statements... */</div><div>localStorage.accountBalance = balance + accountDelta;  /* ....we should have used localStorage.executeAtomic! */</div>


<div><br></div><div>Such ideas would definitely lighten lock contention and possibly eliminate the need for yieldForStorageUpdates (formerly getStorageUpdates).  Another major bonus is that it'd allow us to expose localStorage to workers again, which is one of the top complaints I've gotten when talking to web developers about localStorage.</div>


<div><br></div></blockquote><div> </div><div>Making what should be (and always have been) meaning-preserving transformations like splitting one JS statement into two no longer meaning-preserving --- and in a non-testable way, to boot --- seems like a pretty bad idea to me.<br>
<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div></div><div>I know this is radical stuff, but the way things are speced currently just are not practical.</div>
</blockquote><div> </div>I think that expecting Web developers to reason about concurrency and race conditions is not practical.<br><br></div>Rob<br>-- <br>"He was pierced for our transgressions, he was crushed for our iniquities; the punishment that brought us peace was upon him, and by his wounds we are healed. We all, like sheep, have gone astray, each of us has turned to his own way; and the LORD has laid on him the iniquity of us all." [Isaiah 53:5-6]<br>