JE, version 0.028 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. The core objects are not yet complete, but as long as you don't need all the methods of dates (more pre- cisely, those beginning with ‘set’), this module is actually usable. 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. CHANGES IN THIS RELEASE Optimisations: • The previous release’s memory optimisation tickled a soft spot in String.prototype.replace, which caused that function to run patho- logically more slowly than before. This has been fixed. • Some more optimisations have been made, such that, at least for some scripts, it runs 20% faster than 0.027. Incompatible change: • As threatened, the prop method of all data types and the call and apply methods of functions no longer ‘upgrade’ their arguments. Either run the arguments through JE’s upgrade method or use the ‘Public API’ documented in JE::Types. New feature: • JE::Object::String’s value16 method Various bug fixes--see the Changes file. TO DO - Make the parser extensible/customisable - Finish the core object classes (Date needs to be finished) - 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 - Optimise JS functions by turning them into Perl subs (but run bench- marks first to see whether this would actually speed things up) (I'm having second thoughts about this one) - 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 DEPENDENCIES 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 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 ] and Christian Forster [ boronk boronk de ] for their suggestions, and to the CPAN Testers for their helpful reports. COPYRIGHT AND LICENCE Copyright (C) 2007-8 Father Chrysostomos This program is free software; you may redistribute it and/or modify it under the same terms as perl.