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