34
edits
(Narcissus.options) |
(another host-lang req, more in the interpreter) |
||
Line 46: | Line 46: | ||
** <code>Object.getOwnPropertyNames</code> (ES5) | ** <code>Object.getOwnPropertyNames</code> (ES5) | ||
** <code>__proto__ = null</code> (replaceable with [http://wiki.ecmascript.org/doku.php?id=strawman:simple_maps_and_sets Harmony maps]) | ** <code>__proto__ = null</code> (replaceable with [http://wiki.ecmascript.org/doku.php?id=strawman:simple_maps_and_sets Harmony maps]) | ||
** <code>__proto__ = obj</code> (replaceable with <code>Object.create</code>) | |||
The first three modules are web-portable. Only jsexec.js depends on SpiderMonkey extensions. | The first three modules are web-portable. Only jsexec.js depends on SpiderMonkey extensions. | ||
Line 57: | Line 58: | ||
== Interpreter == | == Interpreter == | ||
Narcissus is a meta-circular JavaScript interpreter with a very direct representation of values: primitives are self-representing, objects are represented as objects (with their properties accessible via usual property access), and functions are represented as functions. The interpreter is designed this way to allow existing JavaScript functions and objects (such as the standard libraries) to interface directly with Narcissus code without following any special protocol or requiring wrapping and unwrapping. | |||
* | === Values === | ||
* | |||
* | * all values are roughly self-representing | ||
* | * function proxies | ||
=== Control flow === | |||
* <code>ExecutionContext</code>s | |||
* <code>RETURN</code>, <code>THROW</code>, <code>BREAK</code>, <code>CONTINUE</code> | |||
* <code>__call__</code> | |||
* function proxies |
edits