1<h1>QuickJS Javascript Engine</h1>
2
3<h2>News</h2>
4
5<ul>
6  <li>2020-04-12:
7    <ul>
8      <li>New release</li>
9    </ul>
10  </li>
11  <li>2020-03-16:
12    <ul>
13      <li>New release</li>
14    </ul>
15  </li>
16  <li>2020-01-19:
17    <ul>
18      <li>New release with
19    experimental <a href="https://github.com/littledan/proposal-bigdecimal">BigDecimal</a>
20    support and updated operator overloading.</li>
21      <li><a href="https://bellard.org/quickjs/pi.html">Small Javascript programs</a> to compute
22      one billion digits of pi.</li>
23    </ul>
24  </li>
25</ul>
26
27<h2>Introduction</h2>
28
29QuickJS is a small and embeddable Javascript engine. It supports the
30<a href="https://tc39.github.io/ecma262/">ES2020</a> specification
31including modules, asynchronous generators, proxies and BigInt.
32<p>
33It optionally supports mathematical extensions such as big decimal
34floating point numbers (BigDecimal), big binary floating point numbers
35(BigFloat) and operator overloading.
36<p>
37Main Features:
38<ul>
39
40<li> Small and easily embeddable: just a few C files, no external
41dependency, 210 KiB of x86 code for a simple <tt>hello world</tt>
42program.</li>
43
44<li> Fast interpreter with very low startup time: runs the 69000 tests
45of the <a href="https://github.com/tc39/test262">ECMAScript Test
46Suite</a> in about 95 seconds on a single core of a desktop PC. The
47complete life cycle of a runtime instance completes in less than 300
48microseconds.</li>
49
50<li> Almost
51  complete <a href="https://tc39.github.io/ecma262/">ES2020</a>
52  support including modules, asynchronous generators and full Annex B
53  support (legacy web compatibility).</li>
54
55<li>Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2020 features.</li>
56
57<li> Can compile Javascript sources to executables with no external dependency.</li>
58
59<li> Garbage collection using reference counting (to reduce memory usage
60  and have deterministic behavior) with cycle removal.</li>
61
62<li> Mathematical extensions: BigDecimal, BigFloat, operator overloading, bigint mode, math mode.</li>
63
64<li> Command line interpreter with contextual colorization implemented in Javascript.</li>
65
66<li> Small built-in standard library with C library wrappers.</li>
67
68</ul>
69
70<h2><a href="https://bellard.org/quickjs/bench.html">Benchmark</a></h2>
71
72<h2>Online Demo</h2>
73
74An online demonstration of the QuickJS engine with its mathematical
75extensions is available
76at <a href="http://numcalc.com">numcalc.com</a>. It was compiled from
77C to WASM/asm.js with Emscripten.
78<p>
79<tt>qjs</tt> and <tt>qjscalc</tt> can be run in <a href="https://bellard.org/jslinux/vm.html?url=buildroot-x86.cfg">JSLinux</a>.
80
81<h2>Documentation</h2>
82
83QuickJS documentation: <a href="https://bellard.org/quickjs/quickjs.html">HTML version</a>,
84<a href="https://bellard.org/quickjs/quickjs.pdf">PDF version</a>.
85<p>
86Specification of the JS Bignum Extensions: <a href="https://bellard.org/quickjs/jsbignum.html">HTML
87version</a>, <a href="https://bellard.org/quickjs/jsbignum.pdf">PDF version</a>.
88
89<h2>Download</h2>
90
91<ul>
92  <li>
93    QuickJS source code: <a href="https://bellard.org/quickjs/quickjs-2020-04-12.tar.xz">quickjs-2020-04-12.tar.xz</a></li>
94  <li>
95    QuickJS extras (contain the unicode files needed to rebuild the unicode tables and the bench-v8 benchmark): <a href="https://bellard.org/quickjs/quickjs-extras-2020-04-12.tar.xz">quickjs-extras-2020-04-12.tar.xz</a>
96  </li>
97  <li>
98    Unofficial <a href="https://github.com/horhof/quickjs">git mirror</a>.
99  </li>
100  <li>
101    Binary releases for Linux are available in <a href="https://github.com/GoogleChromeLabs/jsvu">jsvu</a> and <a href="https://bellard.org/quickjs/binary_releases">here</a>.
102  </li>
103  <li>
104    Typescript compiler compiled with QuickJS: <a href="https://bellard.org/quickjs/quickjs-typescript-linux-x86.tar.xz">quickjs-typescript-linux-x86.tar.xz</a>
105  </li>
106  <li>
107    Babel compiler compiled with QuickJS: <a href="https://bellard.org/quickjs/quickjs-babel-linux-x86.tar.xz">quickjs-babel-linux-x86.tar.xz</a>
108  </li>
109</ul>
110
111<h2>Sub-projects</h2>
112
113QuickJS embeds the following C libraries which can be used in other
114projects:
115<ul>
116  <li><b>libregexp</b>: small and fast regexp library fully compliant with the Javascript ES 2019 specification.</li>
117  <li><b>libunicode</b>: small unicode library supporting case
118conversion, unicode normalization, unicode script queries, unicode
119general category queries and all unicode binary properties.</li>
120  <li><b>libbf</b>: small library implementing arbitrary precision
121    IEEE 754 floating point operations and transcendental functions with
122    exact rounding. It is maintained as a <a href="https://bellard.org/libbf">separate project</a>.
123  </li>
124</ul>
125
126<h2>Links</h2>
127
128<ul>
129  <li><a href="https://www.freelists.org/list/quickjs-devel">QuickJS Development</a> mailing list</li>
130</ul>
131
132<h2>Licensing</h2>
133
134QuickJS is released under
135the <a href="https://opensource.org/licenses/MIT">MIT license</a>.
136<p>
137Unless otherwise specified, the QuickJS sources are copyright Fabrice
138Bellard and Charlie Gordon.
139
140<hr>
141Fabrice Bellard - <a href="https://bellard.org">https://bellard.org/</a>
142