We (PLASMA @ UMass, <a href="http://plasma.cs.umass.edu" rel="nofollow">http://plasma.cs.umass.edu</a>) have a project with similar aims that is somewhat further along: Ninia (<a href="https://github.com/plasma-umass/Ninia" rel="nofollow">https://github.com/plasma-umass/Ninia</a>). Ninia is a Python bytecode interpreter in TypeScript. It is also being integrated with Doppio, a runtime system for running "conventional" programs inside the browser (<a href="https://github.com/plasma-umass/doppio" rel="nofollow">https://github.com/plasma-umass/doppio</a>), also from our group. DoppioJVM uses Doppio to run JVM bytecode in the browser (<a href="http://www.doppiojvm.org/" rel="nofollow">http://www.doppiojvm.org/</a>). For technical details on both of these, see our PLDI 2014 paper: "Doppio: Breaking the Browser Language Barrier", by John Vilk (<a href="https://jvilk.com/" rel="nofollow">https://jvilk.com/</a>) and Emery D. Berger (<a href="http://emeryberger.com" rel="nofollow">http://emeryberger.com</a>): <a href="https://dl.acm.org/citation.cfm?id=2594293" rel="nofollow">https://dl.acm.org/citation.cfm?id=2594293</a> (@ ACM), <a href="http://people.cs.umass.edu/~emery/pubs/doppio.pdf" rel="nofollow">http://people.cs.umass.edu/~emery/pubs/doppio.pdf</a> (non-paywall), video presentation here: <a href="https://vimeo.com/106106738" rel="nofollow">https://vimeo.com/106106738</a>.<p><i>Abstract:</i><p>Web browsers have become a de facto universal operating system, and JavaScript its instruction set. Unfortunately, running other languages in the browser is not generally possible. Translation to JavaScript is not enough because browsers are a hostile environment for other languages. Previous approaches are either non-portable or require extensive modifications for programs to work in a browser.<p>This paper presents Doppio, a JavaScript-based runtime system that makes it possible to run unaltered applications written in general-purpose languages directly inside the browser. Doppio provides a wide range of runtime services, including a file system that enables local and external (cloud-based) storage, an unmanaged heap, sockets, blocking I/O, and multiple threads. We demonstrate Doppio's usefulness with two case studies: we extend Emscripten with DOPPIO, letting it run an unmodified C++ application in the browser with full functionality, and present DoppioJVM, an interpreter that runs unmodified JVM programs directly in the browser. While substantially slower than a native JVM (between 24× and 42× slower on CPU-intensive benchmarks in Google Chrome), DoppioJVM makes it feasible to directly reuse existing, non compute-intensive code.