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.