Support empty expressions in for statements.
Implement try/catch/finally exception handling.
Clean up stack and with/endwith balancing on abrupt exits.
Remove incorrect eval result hack.
Break and continue to labelled statements.
Implement unlabeled break and continue.
Add prefixes and remove duplicate functions.
Make jsY_error return void (as it is a noreturn function).
Remove jsconf.h as it is not really useful.
Rename files and move a few functions around.
Fix CFunction calling conventions.
Fix constructors to return the created object if the function doesn't.
Clean up error object creation and throwing functions.
Rename many jsR functions to jsV.
Add enum-to-string functions for syntax tree and opcodes.
Split header into js.h public and jsi.h private. Start cleaning up
Add Error builtin objects and exception stack.
Fix bug in toFixed, toPrecision and toExponential.
Use ECMA-262 r5 semantics for missing this argument to call/apply.
Optimize String.prototype.charAt and charCodeAt.
Implement String.prototype.charAt and charCodeAt.
Rename jsR_numbertostring to jsR_stringfromnumber.
Create readonly length property on string objects.
Implement Function.prototype.toString()
Alloc interned strings at the end of the string nodes.
Put js_Object contents in a union.
Implement Function.prototype.apply()
More builtins. Fix prototype chains for builtin classes and prototypes.
Implement Number and Object classes.
Refactor ToString and ToNumber functions. Add ToPrimitive.
Implement relational and equality operators.
Reorder switch cases to match opcode order.
Support 'typeof' operator.
Return value of last evaluated expression in eval and script code.
Don't pass pointless 'sp' pointer throughout lexer now that we use
Simplify newline tests since we normalize line endings in next().
Handle \uXXXX escapes in identifiers.
Fix bug in number parsing.
Rewrite lexer to use a proper lookahead token.
Save line number where the token starts for improved error messages.
Import UTF-8 and runestring functions from plan9port.
Remember to remove openames.h when cleaning.
Move object creation functions into jsobject.c
Rename functions that push new objects on the stack.
Add allocation counter to trigger garbage collector during interpretation.
Add constructors called with 'new' keyword.
Improve stackidx function to return "undefined" for out-of-bounds accesses.
Define some global functions and values.
Create function objects with initial properties.
Set prototype internal property when creating objects.
Remember file name and line where a function object came from.
Compile global/eval code as script objects rather than regular functions.
Keep the current environment scope chain in the js_State struct.
Add object property accessor functions to public API.
Fix the shape of the outer API a bit. Implement eval.
Beautify opcode dumping format.
Handle "this" by always keeping it in stack[0].
Clean up. Rearrange files. Rename functions.
Add JS_NORETURN declaration to longjumping functions.
Add callable CFunctions and a print() function.
Remember main.c in tags.
Prepare for objects with internal properties, and closures as objects.
js_pushlstring() for pushing literal (and interned strings).
Don't bother setting undefined slots in array literal elisions.
Calculate stack index for both positive and negative numbers.
Implement value stack and use it in the interpreter.
Fix compilation warning.
Add js_Object with js_Property binary search tree.
Optimise string interning.
Clean up handling of function declarations / statements / expressions.
Set 'this' object for all types of function calls.
Separate variable declaration and initialization.
Create var bindings for self function and function declarations.
Use emitname() for identifiers, and emitstring() for string literals.
Document some trickier byte codes.
Compile logical or/and operators with early termination.
Use special TCALL opcode for foo.bar() calls that set 'this' for the call.
Auto-generate list of operator names.
Improve naming of macros in lexer.