Anne van Kesteren (2015-01-13T18:36:45.000Z)
On Tue, Jan 13, 2015 at 6:14 PM, Mark S. Miller <erights at google.com> wrote:
> My hypothesis is that it *requires* no further changes to JavaScript proper
> beyond ES5 strict mode, ES6 modules, and the inter-realm (aka "global")
> Symbol registry. But some future changes under discussion may help, such as
> extensible value types, if done right.

>From talking to implementers it seems like there are some things we
could still try memory-wise, but it becomes ever more complicated to
do and is not currently a high priority. Which makes me wonder how
much we realistically expect to progress here and if there's something
we could do language-wise that alleviates some of the issues.

SpiderMonkey self-hosted code apparently has access to some mechanisms
that allow lazy loading of the self-hosted code and allows for that
code to be collected again as well. The bytecode generated from the
self-hosted code can apparently be shared cross-realm under certain
circumstances. Though this is limited to realms running on the same
thread, making workers vastly less efficient and if at some point we
start using more threads for the main browser it would become less
efficient overall. But perhaps there are further tricks to share this
across threads as well as realms. These self-hosted tricks are also
currently limited to SpiderMonkey and cannot be used to implement
features outside the JavaScript engine.

(Thanks for the analysis by the way. Curious what others have to say.)


-- 
https://annevankesteren.nl/
d at domenic.me (2015-01-20T21:59:19.861Z)
On Tue, Jan 13, 2015 at 6:14 PM, Mark S. Miller <erights at google.com> wrote:
> My hypothesis is that it *requires* no further changes to JavaScript proper
> beyond ES5 strict mode, ES6 modules, and the inter-realm (aka "global")
> Symbol registry. But some future changes under discussion may help, such as
> extensible value types, if done right.

From talking to implementers it seems like there are some things we
could still try memory-wise, but it becomes ever more complicated to
do and is not currently a high priority. Which makes me wonder how
much we realistically expect to progress here and if there's something
we could do language-wise that alleviates some of the issues.

SpiderMonkey self-hosted code apparently has access to some mechanisms
that allow lazy loading of the self-hosted code and allows for that
code to be collected again as well. The bytecode generated from the
self-hosted code can apparently be shared cross-realm under certain
circumstances. Though this is limited to realms running on the same
thread, making workers vastly less efficient and if at some point we
start using more threads for the main browser it would become less
efficient overall. But perhaps there are further tricks to share this
across threads as well as realms. These self-hosted tricks are also
currently limited to SpiderMonkey and cannot be used to implement
features outside the JavaScript engine.

(Thanks for the analysis by the way. Curious what others have to say.)