Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jterrace/js.js
js.js: A JavaScript JavaScript interpreter
https://github.com/jterrace/js.js
Last synced: 5 days ago
JSON representation
js.js: A JavaScript JavaScript interpreter
- Host: GitHub
- URL: https://github.com/jterrace/js.js
- Owner: jterrace
- License: other
- Created: 2011-09-29T16:02:37.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2022-02-19T20:23:41.000Z (over 2 years ago)
- Last Synced: 2024-03-09T18:39:09.371Z (4 months ago)
- Language: JavaScript
- Homepage:
- Size: 75.9 MB
- Stars: 1,077
- Watchers: 45
- Forks: 98
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Lists
- awesome-stars - jterrace/js.js - js.js: A JavaScript JavaScript interpreter (JavaScript)
- awesome-javascript-interpreters - jterrace/js.js - commit/jterrace/js.js) | based on SpiderMonkey, last version 2012 (javascript interpreters / old projects)
README
js.js is a JavaScript interpreter in JavaScript. Instead of trying to create an
interpreter from scratch, SpiderMonkey_ is compiled into LLVM_ and then
emscripten_ translates the output into JavaScript.-----
Demos
-----
See several running demos `here `_.Paper
-----
Academic paper to appear at
`WebApps 2012 `_ located
`here `_.Status
------
The compiled version of js.js is 3MB and only **594KB** after gzip compression.
Using the Sunspider_ benchmark, the interpreter is about **200 times slower**
than Spidermonkey's native interpreter with the JIT compiler turned off. More
optimizations and benchmarks are coming soon.Example Use
-----------
Here is an example of how to use the API::var jsObjs = JSJS.Init();
var rval = JSJS.EvaluateScript(jsObjs.cx, jsObjs.glob, "1 + 1");
var d = JSJS.ValueToNumber(jsObjs.cx, rval);
window.alert(d); //2
JSJS.End(jsObjs);More examples are available in the ``examples`` directory.
Files
-----
The following files are located in the ``src`` directory.=================== =========
File Description
=================== =========
``js.O0.js`` Command-line JS shell, no optimizations
``js.O0.min.js`` Command-line JS shell, no optimizations, closure compiled
``js.O1.js`` Command-line JS shell, O1 optimizations
``js.O1.min.js`` Command-line JS shell, O1 optimizations, closure compiled
``js.O2.js`` Command-line JS shell, O2 optimizations
``js.O2.min.js`` Command-line JS shell, O2 optimizations, closure compiled
``libjs.O0.js`` JSAPI shared library, no optimizations
``libjs.O0.min.js`` JSAPI shared library, no optimizations, closure compiled with js.js wrapper
``libjs.O1.js`` JSAPI shared library, O1 optimizations
``libjs.O1.min.js`` JSAPI shared library, O1 optimizations, closure compiled with js.js wrapper
``libjs.O2.js`` JSAPI shared library, O2 optimizations
``libjs.O2.min.js`` JSAPI shared library, O2 optimizations, closure compiled with js.js wrapper
``jsjs-wrapper.js`` js.js wrapper API to make using the JSAPI easier
=================== =========To run the shell, you want to run one of these::
js js.O2.min.js -e "print('hello');"
node js.O2.min.js -e "print('hello');"To include the API in your website, include the minified libjs like this::
Alternatively, you can use the wrapper script directly with a non-minified
version (useful for debugging and modifications)::
.. _SpiderMonkey: https://spidermonkey.dev/
.. _emscripten: http://emscripten.org/
.. _LLVM: http://llvm.org/
.. _Sunspider: http://www.webkit.org/perf/sunspider/sunspider.html