<div class="gmail_quote">On Tue, Aug 18, 2009 at 6:07 AM, Mike Wilson <span dir="ltr"><<a href="mailto:mikewse@hotmail.com">mikewse@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
[2] As I understand it, the new GlobalScript construct is<br>
a context that can be shared by all browsing contexts in<br>
the user agent.<br>
</blockquote><div><br></div><div>It can, but with a caveat: in case of user agents that are multi-process, in some cases there will be more then one Global Script instance. For example, lets say there is a process for the tab opened for site S1 and there is another process with a tab for site S2. if S2 has iframe pointing to S1, the page in that iframe will get a separate instance of the Global Script since it can't access the one which is created for the tab showing S1. It is equivalent to running the same app in different browsers...</div>
<div><br></div><div>So it's across browser contexts in the same process. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Questions<br>
---------<br>
<br>
Threading:<br>
This is the unavoidable question ;-) How do you envision<br>
multiple threads accessing this shared context to be<br>
coordinated?<br>
</blockquote><div><br></div><div>The Global Script would run on the main thread of the browser - same one where all the JS on visible pages is executing. It can (and should) use Workers to unload work from ui tread but its use cases are all around running synchronously on the same thread as UI pages of the application, so that it's possible to keep event handlers in it or update the shared UI state synchronously (for example, user selects an image in a document - the toolbar buttons with image operations become active).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
Process boundaries:<br>
In this past discussion there have been several mentions<br>
about having to cluster "pages" inside the same process<br>
if they are to share data.<br>
Why is this so, and why can't shared memory or proxied<br>
objects be an option for browsers doing process<br>
separation?<br></blockquote><div><br></div><div>Since there is a direct JS access to the Global Script on the main thread of the browser, that would require something like synchronous JS IPC. While theoretically possible, it is very complicated to retrofit the existing browsers for that; it can have issues with performance of JS (especially JIT types of JS engines) and it also has disadvantages of any sync API that may block on a remote resource (since another process is independent and may have its own reasons to block).</div>
<div><br></div></div>