Revision history for JE 0.006 March 29, 2007 Alpha release. - Added TypeError and RangeError classes - Finished the Function and Array classes (except for Function.prototype.toString) - JE::String now has an exportable 'surrogify' function - Added some methods (toString, valueOf, charAt, charCodeAt, concat, indexOf, lastIndexOf, localeCompare) to String objects, and added the String constructor to the global object - Found and fixed quite a few bugs in the parser: o || && were parsing as | | and & & o Hexadecimal literals would cause syntax errors o The parser would create a garbage tree when certain infix ops were followed by compound expressions that could con- tain the same op (i.e., [], {}, () and function literals). (I fell into the 'sub foo { /regex(.*)/; foo(); print $1}' trap.) o Bracketed subscripts did not allow whitespace before the closing bracket o "a++\nb++" without a semicolon between the two statements was causing a syntax error because -- and ++ were gobbling up trailing whitespace. o <<= and >>= and >>>= were causing syntax errors o for loops with variable declarations in the header weren't parsing o continue/throw/break/return were not parsing correctly when followed by a line break o 'with' was parsing as 'while' (!) o switch and try blocks weren't parsing correctly 0.005 5 March, 2007 Alpha release. Changes and additions: - The parser has been rewritten completely with recursive sub- routines. It is now faster than before, and doesn't cause bus errors. - The Error and SyntaxError classes now actually work. Before I just threw them together without even testing them. - The Object constructor is now according to spec. - URI-handling functions and the URIError class - Added the rest of Object.prototype's properties 0.004 19 February, 2007 Alpha release. New features and bug fixes in this release include: - Support for all JavaScript statements, not just expression statements - JE::String now provides a desurrogify function. - JE::upgrade now supports coderefs and makes '0' into a num- ber, as the docs say it does. - The JE::new_function method has been added. - Overloading for JE::LValue objects - JE::Object::props now returns the names of the object's pro- totype's properties as well as the object's own - Error and SyntaxError classes - Function literals and declarations - '==' in JS now does string comparison if at least one oper- and is a string (it used to determine that it should do string comparison and then do numeric equals anyway, because I typed '==' by mistake instead of 'eq'!) 0.003 14 February, 2007 Alpha release. All JavaScript operators are now supported. JS numbers now use Perl's nan and inf. A few bugs in the object classes have been fixed. A bug preventing the expansion of backslash escapes in string literals has been fixed. 0.002 7 February, 2007 Still a pre-alpha version with almost no features and lots of bugs. A lot of work has been done on the object classes. The parser is half-written, but the code that actually executes the parse tree is far from complete. The only really noticea- ble new features are that array and object literals and iden- tifiers are now parsed and interpreted. 0.001 24 January, 2007 Pre-alpha version, with almost no features and lots of bugs. The man pages describe many features that have not been imple- mented, so it's all just talk.