- From: Mark S. Miller <erights@google.com>
- Date: Sat, 20 Apr 2013 21:21:30 -0700
- To: es-discuss <es-discuss@mozilla.org>
- Cc: TC39 <e-TC39@ecma-international.org>, "public-script-coord@w3.org" <public-script-coord@w3.org>
- Message-ID: <CABHxS9j=93+QcC0jn0jntcZbT9gdUy8xCN8t+gd_2YXNgaZufw@mail.gmail.com>
(Thanks to Rick Waldron and Brendan Eich for encouragement towards posting this) As we see on es-discuss, the pressure towards standardizing soon various features currently absent from ES6 is increasing. Rather than stretch ES6, I think we should work towards completing ES6 asap, and then proceed to ship an ES7 that is both more modest and out earlier than current expectations. I think the focus of ES7 should be parallelism, concurrency, asynchrony, and preparation for distribution. Call this the "concurrency theme". This involves at least * Communicating Event Loop concurrency model, - with the two-priority event loop already required by both browser and server. * Object.observe * Distribution compatible promises (at least Promises/A+) * Module Loaders * Weak References I hesitate to put Module Loaders on the above list rather than leaving them in ES6; but it would allow their semantics to rest on event loops and their API to rest on promises. If we can get ES7 out quickly, this need not be as painful as it might seem, and would help us ship ES6 faster. Elements of the concurrency theme that may be in ES7 or may be postponed to ES8: * RiverTrail * The Vat model * The semantics of inter-vat communications - including a principled alternative of structured clone - The emphasis being remote object messages, with postMessage and such being only one of many transports. * The promise hooks needed to extend promises securely over the network - See makeFar and makeRemote at https://code.google.com/p/es-lab/source/browse/trunk/src/ses/makeQ.js#410 * Event streams How much of the latter we bite off in ES7 and how much we delay till ES8 will determine how quickly we can ship ES7. But however they split between ES7 and ES8, I think these should be the next things on our plate after ES6. Some things that I think should clearly wait till ES8: * SES * Distributed persistence * The actual distributed cryptographic protocol for doing distributed secure persistent object communications. Some of these should perhaps be on separate tracks within TC39, much as i18n is already on a separate track. Some non-concurrency issues that will nevertheless be pressing in the ES7 timeframe: * Completing the class design - at least high integrity and private state * Quasi-parsers for JS, HTML, CSS * Pinning down the full semantics of inter-realm interaction within a Vat, e.g., - multiple same-domain iframes - loader-created fresh frames * Possibly lexically nested modules Although I'm posting this on three lists, discussion should proceed only on es-discuss. Thoughts? -- Cheers, --MarkM
Received on Sunday, 21 April 2013 04:21:58 UTC