Unofficial mirror of Fabrice Bellard's quickjs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Horunabu Hofutenho c389f9594e
2020-07-05
1 month ago
.github/ISSUE_TEMPLATE Add issue template 5 months ago
doc 2020-07-05 1 month ago
examples 2020-07-05 1 month ago
tests 2020-07-05 1 month ago
Changelog 2020-07-05 1 month ago
LICENSE Add license file 5 months ago
Makefile 2020-07-05 1 month ago
README.md 2020-07-05 1 month ago
TODO 2020-07-05 1 month ago
VERSION 2020-07-05 1 month ago
cutils.c 2019-09-01 1 year ago
cutils.h 2020-07-05 1 month ago
jscompress.c Init 1 year ago
libbf.c 2020-07-05 1 month ago
libbf.h 2020-03-16 6 months ago
libregexp-opcode.h Init 1 year ago
libregexp.c 2020-07-05 1 month ago
libregexp.h Init 1 year ago
libunicode-table.h 2020-03-16 6 months ago
libunicode.c 2019-09-18 1 year ago
libunicode.h Init 1 year ago
list.h Init 1 year ago
qjs.c 2020-07-05 1 month ago
qjsc.c 2020-07-05 1 month ago
qjscalc.js 2020-01-19 7 months ago
quickjs-atom.h 2020-07-05 1 month ago
quickjs-libc.c 2020-07-05 1 month ago
quickjs-libc.h 2020-07-05 1 month ago
quickjs-opcode.h 2020-03-16 6 months ago
quickjs.c 2020-07-05 1 month ago
quickjs.h 2020-07-05 1 month ago
readme.txt Init 1 year ago
release.sh 2020-03-16 6 months ago
repl.js 2020-07-05 1 month ago
run-test262.c 2020-04-12 5 months ago
test262.conf 2020-07-05 1 month ago
test262_errors.txt 2020-07-05 1 month ago
test262o.conf 2019-07-21 1 year ago
test262o_errors.txt Init 1 year ago
unicode_download.sh 2020-03-16 6 months ago
unicode_gen.c 2019-10-27 10 months ago
unicode_gen_def.h 2020-03-16 6 months ago

README.md

QuickJS Javascript Engine

News

Introduction

QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification 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.

Main Features:

  • Small and easily embeddable: just a few C files, no external dependency, 210 KiB of x86 code for a simple hello world program.
  • 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 microseconds.
  • Almost complete ES2020 support including modules, asynchronous generators and full Annex B support (legacy web compatibility).
  • Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2020 features. A summary is available at Test262 Report.
  • Can compile Javascript sources to executables with no external dependency.
  • 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.
  • Command line interpreter with contextual colorization implemented in Javascript.
  • Small built-in standard library with C library wrappers.

Benchmark

Online Demo

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.

Documentation

QuickJS documentation: HTML version, PDF version.

Specification of the JS Bignum Extensions: HTML version, PDF version.

Download

Sub-projects

QuickJS embeds the following C libraries which can be used in other projects:

  • libregexp: small and fast regexp library fully compliant with the Javascript ES 2019 specification.
  • 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.

Links

Licensing

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/