Continuum - ES6 virtual machine built in ES3

Brandon Benvie brandon at brandonbenvie.com
Tue Dec 11 12:46:01 PST 2012


http://github.com/benvie/continuum - project
http://benvie.github.com/continuum - debugger
npm module 'continuum'

Continuum is a virtual machine for executing ES6 code (the spec is rapidly
iterating so many things need updating). It's written in ES3 and targets a
baseline of IE8 (debugger included). With a small amount of additional work
it could run reliably in engines as old as IE6, but this hasn't been a
priority.

Almost all ES6 features are supported to some degree: modules,
Proxy/Reflect, Map/Set/WeakMap, generators,
destructuring/spread/rest/default params, __proto__, classes, Symbols,
Typed Arrays/DataView (all features work in any host engine that can run
Continuum). The only remaining features which are unimplemented are tail
call optimization (incomplete and disabled pending some changes), array
comprehensions, generator expressions, and new parts of the binary data API
(structs, etc.). Some features are incomplete and potentially buggy,
especially ones which are completely new and have a lot of surface area not
covered by test262 (proxies, generators especially). I intend to start
creating test cases for these features as soon as I finish fixing out the
remaining test262 tests that Continuum fails.

The engine is currently completely unoptimized so performance is abysmal. I
intend to persue optimizations following a strategy similar to how PyPy
works, in tracing the interpreter and runtime and creating a JIT "compiler"
that compiles with the host engine as the target and asm.js type code as
the generated output. This is a parallel to PyPy's usage of RPython -> C.

In the process of filling out spec features, I have also been working on a
number of special APIs for using information from the runtime for debugging
purposes, mocking, and integration with the host environment. I'm also
working on the foundation for a development environment built with
Continuum as its core. These things may be found in the experimental folder
of the repo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121211/bc0feea1/attachment.html>


More information about the es-discuss mailing list