[webkit-dev] GlobalScript in WebKit

Maciej Stachowiak mjs at apple.com
Mon Nov 30 17:56:45 PST 2009


On Nov 30, 2009, at 5:37 PM, Dmitry Titov wrote:

> On Mon, Nov 30, 2009 at 5:21 PM, Maciej Stachowiak <mjs at apple.com>  
> wrote:
>
> By the way, we could enable the SharedScript programming model at  
> much lower WebKit-level implementation cost and with much less API  
> surface as follows:
>
> - Allow Window to be passed via the structured clone algorithm over  
> a MessageChannel, but it throws on all access if the recipient is  
> not same-origin, in the same thread, and eligible for synchronous  
> calls (i.e. in the same process).
>
> I believe this would allow SharedScript to be implemented in  
> JavaScript. Essentially you'd use a SharedWorker to coordinate and  
> elect a leader Window within each same-process group, which could  
> then create a JavaScript object which it vends to all other Windows.  
> The object does not get GC'd until all the referencing windows go  
> away.
>
> Yep, a variants of this were proposed... One difficulty with this is  
> that while JS object is kept alive, the interesting objects like  
> timers, XHR, WebSockets die once leader Window is closed.

These could all be proxied to a SharedWorker (with callbacks possibly  
delivered to the current leader window). This would involve some extra  
cross-thread messaging overhead but would not require restarting when  
the leader Window is closed. Alternately, JS-level wrappers could be  
made in which handle changes in the leader window transparently.

> Plus, the leader [re]election algorithm should be implemented. It is  
> not impossible to keep track of enough things to fix up the context,  
> but it is way too difficult and error-prone.
>
> It sounds like by making it easier with SharedScript we'd remove the  
> burden of those implementations from many web developers. Just  
> connect to it and it provides stable JS context for things to run in.
>
> If we go with this, I believe we'll need to follow up with things  
> like making XHR work even if page created it was closed... It might  
> end up being essentially the same as SharedScript itself.

I agree that SharedScript would make things easier on content authors  
compared to my proposal, in particular, it would save the effort to  
implement a SharedScript-like environment via a JavaScript library.  
But for experimental features, prototyping mostly or entirely in JS is  
a lower-risk approach, since it allows issues to be discovered without  
risking premature lockin of a feature that doesn't work out. You can  
even try multiple different approaches at once via different JS  
libraries.

Regards,
Maciej

P.S. I haven't seen an answer to Hyatt's question about whether  
SharedScript is intended as a purely experimental feature that doesn't  
ship enabled in release versions or if it's intended to ship in product.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20091130/a2c885bb/attachment.html>


More information about the webkit-dev mailing list