Narcissus/Development: Difference between revisions

another host-lang req, more in the interpreter
(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 ==


'''TODO:''' write this
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.


* value representation
=== Values ===
* control flow
 
* use of proxies
* all values are roughly self-representing
* standard library
* 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
34

edits