including modules, asynchronous generators, proxies and BigInt.
It optionally supports mathematical extensions such as big decimal
floating point numbers (BigDecimal), big binary floating point numbers
(BigFloat) and operator overloading.
- Small and easily embeddable: just a few C files, no external
dependency, 210 KiB of x86 code for a simple hello world
- Fast interpreter with very low startup time: runs the 69000 tests
of the ECMAScript Test
Suite in about 95 seconds on a single core of a desktop PC. The
complete life cycle of a runtime instance completes in less than 300
support including modules, asynchronous generators and full Annex B
support (legacy web compatibility). Many features from the
specification are also supported.
- Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2019 features.
- Garbage collection using reference counting (to reduce memory usage
and have deterministic behavior) with cycle removal.
- Mathematical extensions: BigDecimal, BigFloat, operator overloading, bigint mode, math mode.
- Small built-in standard library with C library wrappers.
An online demonstration of the QuickJS engine with its mathematical
extensions is available
at numcalc.com. It was compiled from
C to WASM/asm.js with Emscripten.
qjs and qjscalc can be run in JSLinux.
QuickJS documentation: HTML version,
Specification of the JS Bignum Extensions: HTML
version, PDF version.
QuickJS embeds the following C libraries which can be used in other
- libunicode: small unicode library supporting case
conversion, unicode normalization, unicode script queries, unicode
general category queries and all unicode binary properties.
- libbf: small library implementing arbitrary precision
IEEE 754 floating point operations and transcendental functions with
exact rounding. It is maintained as a separate project.
QuickJS is released under
the MIT license.
Unless otherwise specified, the QuickJS sources are copyright Fabrice
Bellard and Charlie Gordon.
Fabrice Bellard - https://bellard.org/