|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 29-Oct-2021 | - |
| doc/ | | 29-Oct-2021 | - | | |
| examples/ | | 29-Oct-2021 | - | | |
| tests/ | | 29-Oct-2021 | - | | |
| .gitignore | A D | 29-Oct-2021 | 4 | 1 | 1 |
| CMakeLists.txt | A D | 29-Oct-2021 | 1 KiB | 35 | 25 |
| Changelog | A D | 29-Oct-2021 | 3.2 KiB | 126 | 98 |
| LICENSE | A D | 29-Oct-2021 | 1.1 KiB | 22 | 17 |
| Makefile | A D | 29-Oct-2021 | 12 KiB | 470 | 332 |
| README.md | A D | 29-Oct-2021 | 5 KiB | 142 | 113 |
| TODO | A D | 29-Oct-2021 | 3.6 KiB | 79 | 72 |
| VERSION | A D | 29-Oct-2021 | 11 | 2 | 1 |
| cutils.c | A D | 29-Oct-2021 | 16.5 KiB | 621 | 497 |
| cutils.h | A D | 29-Oct-2021 | 7.2 KiB | 298 | 223 |
| gen_qjsc.sh | A D | 29-Oct-2021 | 10 | 2 | 1 |
| jscompress.c | A D | 29-Oct-2021 | 24.4 KiB | 919 | 818 |
| libbf.c | A D | 29-Oct-2021 | 234.1 KiB | 8,467 | 7,115 |
| libbf.h | A D | 29-Oct-2021 | 17.4 KiB | 536 | 374 |
| libregexp-opcode.h | A D | 29-Oct-2021 | 2.2 KiB | 59 | 31 |
| libregexp.c | A D | 29-Oct-2021 | 81.8 KiB | 2,594 | 2,284 |
| libregexp.h | A D | 29-Oct-2021 | 3.1 KiB | 92 | 52 |
| libunicode-table.h | A D | 29-Oct-2021 | 206.9 KiB | 4,369 | 4,288 |
| libunicode.c | A D | 29-Oct-2021 | 45.3 KiB | 1,539 | 1,381 |
| libunicode.h | A D | 29-Oct-2021 | 3.7 KiB | 125 | 74 |
| linux_jquick_mutex.c | A D | 29-Oct-2021 | 1.2 KiB | 67 | 47 |
| linux_jquick_mutex.h | A D | 29-Oct-2021 | 403 | 27 | 17 |
| list.h | A D | 29-Oct-2021 | 3.2 KiB | 108 | 65 |
| qjs.c | A D | 29-Oct-2021 | 16.1 KiB | 556 | 475 |
| qjsc | A D | 29-Oct-2021 | 3.2 MiB | | |
| qjsc.c | A D | 29-Oct-2021 | 20.2 KiB | 729 | 615 |
| qjscalc.js | A D | 29-Oct-2021 | 71.1 KiB | 2,642 | 2,405 |
| quickjs-atom.h | A D | 29-Oct-2021 | 7.7 KiB | 273 | 235 |
| quickjs-libc.c | A D | 29-Oct-2021 | 105.6 KiB | 3,813 | 3,304 |
| quickjs-libc.h | A D | 29-Oct-2021 | 2.3 KiB | 59 | 29 |
| quickjs-opcode.h | A D | 29-Oct-2021 | 15 KiB | 368 | 305 |
| quickjs.c | A D | 29-Oct-2021 | 1.6 MiB | 53,317 | 47,246 |
| quickjs.h | A D | 29-Oct-2021 | 39.8 KiB | 1,034 | 795 |
| readme.txt | A D | 29-Oct-2021 | 66 | 2 | 1 |
| release.sh | A D | 29-Oct-2021 | 2.4 KiB | 117 | 73 |
| repl.js | A D | 29-Oct-2021 | 48.1 KiB | 1,567 | 1,369 |
| run-test262.c | A D | 29-Oct-2021 | 60.9 KiB | 2,099 | 1,837 |
| test262.conf | A D | 29-Oct-2021 | 3.8 KiB | 190 | 138 |
| test262_errors.txt | A D | 29-Oct-2021 | 4.4 KiB | 31 | 30 |
| test262o.conf | A D | 29-Oct-2021 | 21.2 KiB | 411 | 323 |
| test262o_errors.txt | A D | 29-Oct-2021 | 0 | | |
| unicode_download.sh | A D | 29-Oct-2021 | 485 | 20 | 9 |
| unicode_gen.c | A D | 29-Oct-2021 | 81.3 KiB | 3,058 | 2,667 |
| unicode_gen_def.h | A D | 29-Oct-2021 | 6.7 KiB | 285 | 271 |
README.md
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
readme.txt