clkao/JE
my fork of JE: http://search.cpan.org/dist/JE/
README
JE, version 0.053
JE is a pure-Perl ECMAScript (JavaScript) engine. Here are some of its
advantages:
- Easy to install (no C compiler necessary)
- Compatible with Data::Dump::Streamer, so the runtime environment
can be serialised
- The parser can be extended/customised to support extra (or
fewer) language features (not yet complete)
- All JavaScript datatypes can be manipulated directly from Perl
(they all have overloaded operators)
Here are its main weakness:
- It's slow (well, what did you expect?).
- It uses lots of memory.
- It leaks memory (to be fixed).
This is still an alpha release, but it fully implements ECMAScript v3,
except for a few seldom-used features like -0.
If you have the time and the interest, please experiment with this
module (or maybe even lend a hand :-). If you have any ideas as to how
the API could be improved or reworked, please e-mail me.
RECENT CHANGES
0.053
-----
• The regular expression module was relying on a bug in perl that is
fixed in 5.13.8.
• The match and search methods of strings now work if no regular
expressions have been used yet. (A ‘require’ was missing.)
0.052
-----
Bug fix: The return value of JE::LValue->can can now be used and will
delegate properly to the referent.
Test fix: t/parse08-regexps.t has been fixed to work with the new
(?^u:...) stringification of internally-UTF8 regular expressions in
perl 5.13.8.
0.051
-----
Bug fix: On DragonFly BSD, exp(Infinity) and exp(-Infinity) now cor-
rectly return Infinity and 0, respectively, instead of NaN (I hope).
TO DO
- Make the parser extensible/customisable
- Add more helpful error messages
- Determine some logical way of dealing with locale settings (for
String.prototype.localeCompare, et al.)
- Finish writing tests
- Deal with circular references
- Finish making built-in JS properties load lazily
- Finish optimising JS compiled code by turning it into Perl code
- Other optimisations
INSTALLATION
The easiest way to install this module is to use the CPAN module or
the cpan script:
[sudo] perl -MCPAN -e "install JE"
[sudo] cpan
cpan> install JE
Or you can use the following:
perl Makefile.PL
make
make test
[sudo] make install
PREREQUISITES
This module requires perl 5.8.3 or higher and the following modules:
• Scalar::Util version 1.14 or later
• The TimeDate distribution (more precisely, Time::Zone, Date::Format
and Date::Parse)
• Encode 2.08 or later
For perl versions earlier than 5.9.4 it also requires
Tie::RefHash::Weak.
Later it will probably require Unicode::Collate.
There is a slight incompatibility with perl version 5.8.3. If you try
to create a regular expression with invalid modifiers, you will get a
warning as well as a SyntaxError. This causes one of the test scripts
(parse08-regexps.t) to fail.
DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc JE
Or try using man (it's faster, in my experience):
man JE
ACKNOWLEDGEMENTS
Thanks to Kevin Cameron [ kevin cameron com ] for his contributions,
to Max Maischein [ webmaster corion net ] for letting me use his
tests,
to Andy Armstrong [ andy hexten net ],
Yair Lenga [ yair lenga gmail com ],
Alex Robinson [ alex solidgoldpig com ],
Christian Forster [ boronk boronk de ],
Imre Rad [ radimre freemail hu ] and
Craig MacKenna [ craig animalhead com ]
for their suggestions,
and to the CPAN Testers for their helpful reports.
COPYRIGHT AND LICENCE
Copyright (C) 2007-10 Father Chrysostomos
This program is free software; you may redistribute it and/or modify
it under the same terms as perl.