ECMAScript compiler and runtime written in Java.

Build Status

Implementation Status

Implements ES2018 Draft 2018-10-25, ES2018 Intl Draft 2018-10-24, and some of the current proposals.

ECMAScript proposals below stage 3 are not enabled by default. To enable them use the --stage command line parameter.

Note: Support of stage 2 (or below) proposals is highly experimental (cf. TC39 Process), implementation incompatibilities are to be expected.

Build Instructions and Shell


Build Instructions


Test Suites

Test262 Test Suite

To start the Test262 test runner select the test262 Maven profile and set the TEST262_PATH environment variable or use the -Dtest262.path parameter.

export TEST262_PATH = <test262 main directory>
mvn test -P test262

mvn test -P test262 -Dtest262.path=<test262 main directory>

The -Dtest262.include parameter can be used to select specific test cases:

mvn test -P test262 -Dtest262.include="test/built-ins/Array/prototype/**/*.js"

mvn test -P test262 -Dtest262.include="test/built-ins/{Boolean\,Number}/prototype/**/*.js"

The -Dtest262.exclude parameter allows to exclude test cases:

mvn test -P test262 -Dtest262.exclude="test/built-ins/**/*.js"

See here for the test262 default configuration.

External Test Suites

Additional test suites are available to run tests from ChakraCore, Mozilla, V8, and WebKit using the external Maven profile.

The following environment variables need to be set to run these tests:

Alternatively, the -Dchakra.path=..., -Dmozilla.path=..., -Dv8.path=..., and -Dwebkit.path=... parameters can be used.

To skip an external test, use -D<name>.skip=true. For example to run only the Mozilla tests, use:

mvn test -P external -Dmozilla.path=<...> -Dchakra.skip=true -Dv8.skip=true -Dwebkit.skip=true

Built-in Test Suite

The built-in test suite is run when no other Maven profile was selected. In other words, it is run when the command mvn test is used.