4 ms·
We (PLASMA @ UMass, http://plasma.cs.umass.edu http://plasma.cs.umass.edu) have a project with similar aims that is somewhat further along: Ninia (https://githu
by emeryberger 11y ago
We (PLASMA @ UMass, http://plasma.cs.umass.edu http://plasma.cs.umass.edu) have a project with similar aims that is somewhat further along: Ninia (https://github.com/plasma-umass/Ninia https://github.com/plasma-umass/Ninia). 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 (https://github.com/plasma-umass/doppio https://github.com/plasma-umass/doppio), also from our group. DoppioJVM uses Doppio to run JVM bytecode in the browser (http://www.doppiojvm.org/ http://www.doppiojvm.org/). For technical details on both of these, see our PLDI 2014 paper: "Doppio: Breaking the Browser Language Barrier", by John Vilk (https://jvilk.com/ https://jvilk.com/) and Emery D. Berger (http://emeryberger.com http://emeryberger.com): https://dl.acm.org/citation.cfm?id=2594293 https://dl.acm.org/citation.cfm?id=2594293 (@ ACM), http://people.cs.umass.edu/~emery/pubs/doppio.pdf http://people.cs.umass.edu/~emery/pubs/doppio.pdf (non-paywall), video presentation here: https://vimeo.com/106106738 https://vimeo.com/106106738.
Abstract:
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.
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.
- jpolitz 11y agoLooks like a version of the paper without the ACM paywall is at https://web.cs.umass.edu/publication/docs/2013/UM-CS-2013-026.pdf https://web.cs.umass.edu/publication/docs/2013/UM-CS-2013-02....
- emeryberger 11y agoThat's actually a much older version that is hopelessly out of date. I'll add a non paywall link.
- emeryberger 11y agohttp://people.cs.umass.edu/~emery/pubs/doppio.pdf http://people.cs.umass.edu/~emery/pubs/doppio.pdf
- techdragon 11y agoThis is excellent, I'm definitely going to read through this and see if anything can be borrowed to help improve Batavia from these papers.
- jvilk 11y agoYou can also chat with me (John Vilk), the lead grad student/dev on Ninia/Doppio/etc. I'm happy to answer any questions you may have!