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.
Begin generating byte code.
Simplify constant folding function.
Add warning function to parser. Warn but accept function expressions
Improve regexp context detection.
Count lines in block comments as well.
Check future reserved words in parser to allow them as IdentifierName tokens.
Add UNDEF expression to handle array elisions properly.
Preserve regexp flags. Escape more characters when dumping strings.
Add proper pretty-printing functions.
Ensure that we can seek in the file in js_loadfile.
Clean split between loader, parser and pretty-printer.
Rename files and put stuff in the correct headers.
Parse array literals with elisions.
Reorder statement cases to align with spec text.
Remove pointless STM_BLOCK nodes.
Pretty-print AST to javascript syntax.
Clean up interface between lexer and parser.
Pretty print and indent STM_BLOCK nodes.
Parse labelled statements.
Fix typo. Remove ID macro.
Add token string lookup table for better error messages.
Use setjmp/longjmp to handle parsing errors.
Handle "exp [NLTH] ++" case in parser rather than lexer.
Recursive descent parser for expressions.
String interning table.
Support line continuation escapes in string literals.
Fix typo so all arguments are loaded.
Add [no line-terminator here] context handling in lexer.
Set newline flag if a token is preceded by a line terminator.
Prepare lexer for hooking up to generated parser.
Throw errors on future words immediately.
Check hex string escapes so we don't read past the end of the string.
Print error message with line number on lexical errors.