summaryrefslogtreecommitdiffstats
path: root/development/quickjs/README
diff options
context:
space:
mode:
Diffstat (limited to 'development/quickjs/README')
-rw-r--r--development/quickjs/README37
1 files changed, 37 insertions, 0 deletions
diff --git a/development/quickjs/README b/development/quickjs/README
new file mode 100644
index 0000000000..3ffa3044b1
--- /dev/null
+++ b/development/quickjs/README
@@ -0,0 +1,37 @@
+QuickJS is a small and embeddable Javascript engine by Fabrice Bellard
+and Charlie Gordon. It supports the ES2023 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.
+* Fast interpreter with very low startup time
+* Almost complete ES2023 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 ES2023 features.
+* 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 in JS.
+* Small built-in standard library with C library wrappers.
+
+NOTE:
+In order to adhere to Slackware standards the source is patched to:
+* change library paths in the compiler
+* build a shared library
+Since the default behaviour of the compiler is to output statically
+linked binaries, an aditional shared library is provided so that users
+may produce C files from Javascript source code
+(e.g.: qjsc -e in.js -o out.c), and then compile and link dynamically,
+e.g.:
+ cc -I /usr/include/quickjs out.c -o executable -lquickjs
+I believe this is the less intrussive set of changes to achieve those
+goals.
+