This code tries to be an implementation of ECMAScript 4, as available at http://www.mozilla.org/js/language/ Note that ES4 is still in the process of standardization.
It is meant to behave like an ES4 interpreter in strict mode, none of the backward-compatible braindead-isms like newline semicolon insertion and other stuff will ever be implemented.
This is the list of its shortcomings:
exceptions
namespaces,packages
constness
Number/String constructor and class methods
real regexp's
the methods listed in FIXME's (js_library.cc js_value.cc)
cannot cross-assign predefined methods [won't be]
Grammatical semicolon insertion [won't be]
type declaration [won't be]
Be advised that a javascriptvalue that is passed to you through the interpreter, e.g. as a call parameter, may not be of the type that you expect. For example, in "var x = 4; f(x);", what comes in as the parameter x into f is a wrapper value that adds assign()ability to a value that is wrapped inside. The advised solution to get the object that you expect is to call eliminateWrappers() on the potentially wrapped value.