Skip to content
Find file
New pull request
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


JE, version 0.053

JE is a pure-Perl ECMAScript (JavaScript) engine. Here are some of its

    - 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.


• 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.)

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.

Bug fix:  On DragonFly BSD,  exp(Infinity) and exp(-Infinity) now cor-
rectly return Infinity and 0,  respectively,  instead of NaN (I hope).


- 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


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 test
    [sudo] make install


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

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.


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


Thanks to Kevin Cameron [ kevin  cameron com ] for his  contributions,

to Max Maischein [ webmaster  corion net ] for  letting  me  use  his

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 (C) 2007-10 Father Chrysostomos

This program is free software; you may redistribute it and/or modify
it under the same terms as perl.
Something went wrong with that request. Please try again.