QuickJS - a lightweight JavaScript engine developed by the founder of QEMU and FFmpeg

JavaScript

French mathematician Fabrice Bellard, who founded the QEMU and FFmpeg projects and who also created the fastest formula for calculating the Pi number and developed the BPG image format.

Fabrice Bellard is best known as the lead developer of QEMU (an emulator that emulates various hardware architectures) and Tiny C Compiler (tcc), a very small but comprehensive C compiler, originally written to win the “International Obfuscated C Code Contest”.

Now recently shared to the public the first version of his new work which is in JavaScript and this is a new engine called JavaScript QuickJS.

About JavaScript QuickJS

The QuickJS JavaScript engine it is compact and designed to be incorporated into other systems. The project code It is written in C and distributed under the MIT license. Also available is an engine build compiled into WebAssembly using Emscripten and suitable for running in browsers.

The JavaScript implementation supports the ES2019 specification, including modules, asynchronous generators, and proxies.

In the QuickJS JavaScript engine optional non-standard math extensions for JavaScript are supported, such as the BigInt and BigFloat types, as well as operator overloading.

By performance, QuickJS significantly outperforms available analogsFor example, in the bench-v8 test, the XS engine is 35% ahead, DukTape more than doubled, JerryScript three times and MuJS seven times.

In addition to the library to embed the engine in the application, the project also offers the qjs interpreter, which can be used to run JavaScript code from the command line.

In addition, the qjsc compiler is available and is capable of outputting executable files that can be run separately and that these do not require external dependencies.

Of the main features of the QuickJS JavaScript engine the following points stand out:

  • Compact and easy to integrate into other projects. The code includes only a few C files that do not require external dependencies to build. A simple compiled application takes about 190 Kb
  • Very high performance and fast startup times. Passing 56 thousand ECMAScript compatibility tests takes approximately 100 seconds when running a normal desktop on a kernel. Runtime initialization takes less than 300 microseconds
  • Nearly full support for the ES2019 specification and full support for the "B" application, which defines the components for compatibility with older web applications
  • Complete the passage of all tests of the ECMAScript Test Suite
  • Support for compiling Javascript code into executable files without external dependencies
  • The garbage collector relies on reference counting without cyclical cleanup, allowing for predictable behavior and reduced memory consumption
  • A set of extensions for mathematical calculations in the JavaScript language
  • A shell for executing code in command line mode, which supports contextual code highlighting
  • Compact standard library over C library

In addition to this, On the other hand, the project is also developing three C libraries related parties involved in QuickJS and suitable for individual use:

  1. freegexp: a small and fast regular expression library that complies with the JavaScript ES2019 specification
  2. libunicode: a small Unicode library that supports case conversion, Unicode normalization, Unicode script requests, Unicode general category queries, and all Unicode binary properties
  3. libbf: This is also a small library that implements IEEE 754 floating point operations and transcendental functions with exact rounding. It is kept as a separate project.

How to get SavaScript QuickJS?

Downloading the source code for compilation can be done from the following link. After installation, a Makefile is provided to compile the engine on Linux or Mac OS / X.

In the same link you can consult the QuickJS documentation for more information. It also provides benchmark information showing QuickJS performance with Google's V8 engine and a comparison between it and other tools in the same category.


Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.