Der Gründer von QEMU und FFmpeg hat die JavaScript-Engine QuickJS veröffentlicht

Der französische Mathematiker Fabrice Bellard, der Projekte wie QEMU und FFmpeg ins Leben rief, die schnellste Formel zur Berechnung von Pi entwickelte und ein Bildformat schuf, BPG, veröffentlichte die erste Ausgabe des neuen JavaScript-Engines QuickJS. Die Engine zeichnet sich durch ihre Kompaktheit aus und ist auf die Einbettung in andere Systeme ausgelegt. Der Projektcode ist in C geschrieben und wird unter der MIT-Lizenz verbreitet. Es ist auch eine Version der Engine verfügbar, die in WebAssembly mit Hilfe von Emscripten kompiliert wurde und sich zum Ausführen in Browsern eignet.

Die JavaScript-Implementierung unterstützt entspricht der ES2019-Spezifikation und umfasst Module, asynchrone Generatoren und Proxys. Optional werden nicht standardmäßige mathematische für die Arbeit mit Modulen, die anstelle von Header-Dateien verwendet werden können. Module bieten einen neuen Weg zur Organisation von Quelltexten, basierend auf der Definition von Komponentenbereichen, ohne über „#include“ eingebundene Header-Dateien. Modelle für JavaScript unterstützt, wie BigInt und BigFloat, sowie Operatorüberladung. In Bezug auf die Leistung übertrifft QuickJS erheblich vergleichbare Engines, beispielsweise bei dem Test bench-v8 übertrifft die Engine
XS um 35%, DukTape mehr als das Doppelte, JerryScript um das Dreifache und MuJS um das Siebenfache. Neben der Bibliothek zur Einbettung der Engine in Anwendungen bietet das Projekt auch den Interpreter qjs an, der zur Ausführung von JavaScript-Code aus der Kommandozeile verwendet werden kann. Darüber hinaus steht der Compiler qjsc zur Verfügung, der in der Lage ist, ausführbare Dateien zu generieren, die für einen isolierten Betrieb ohne externe Abhängigkeiten erforderlich sind.

Kompaktheit und einfache Einbettung in andere Projekte. Der Code umfasst nur wenige C-Dateien, die keine externen Abhängigkeiten für die Kompilierung benötigen. Das kompilierte einfachste Programm nimmt etwa 190 KB ein;

Hauptmerkmale:

  • Sehr hohe Leistung und kurze Startzeit. Das Durchlaufen von 56.000 Tests auf die Kompatibilität mit ECMAScript dauert etwa 100 Sekunden auf einem Kern eines üblichen Desktop-PCs. Die Initialisierung der Laufzeit benötigt weniger als 300 Mikrosekunden;
  • Fast vollständige Unterstützung der ES2019-Spezifikation und vollständige Unterstützung der Anwendung „B“, die Komponenten für die Kompatibilität mit alten Webanwendungen definiert;
  • Komplette Durchführbarkeit aller Tests aus dem ECMAScript Test Suite;
  • Unterstützung für die Kompilierung von JavaScript-Code in ausführbare Dateien ohne externe Abhängigkeiten;
  • Ein auf Referenzzählung basierender Garbage Collector ohne zyklische Ausführungen der Bereinigung, der vorhersagbares Verhalten und eine Reduzierung des Speicherverbrauchs ermöglicht;
  • Ein auf der Zählung von Verweisen basierender Garbage Collector ohne zyklische Reinigung, der ein vorhersehbares Verhalten und eine Reduzierung des Speicherverbrauchs ermöglicht hat;
  • Erweiterungspaket für mathematische Berechnungen in JavaScript;
  • Shell zum Ausführen von Code im Kommandozeilenmodus mit Unterstützung für die kontextbezogene Syntaxhervorhebung;
  • Kompakte Standardbibliothek mit Wrappern über die C-Bibliothek.

Das Projekt entwickelt auch drei begleitende C-Bibliotheken, die in QuickJS verwendet werden und für die Einzelanwendung geeignet sind:

  • libregexp — schnelle Implementierung von regulären Ausdrücken, die vollständig mit der Spezifikation von Javascript ES 2019 kompatibel sind;
  • libunicode — kompakte Bibliothek zur Arbeit mit Unicode;
  • libbf — Implementierung von Operationen mit Fließkommazahlen beliebiger Präzision und transzendentalen Funktionen mit genauer Rundung.

Quelle: opennet.ru

60GB SSD 8Gb DDR4