QEMU- und FFmpeg-Gründer veröffentlichen QuickJS JavaScript Engine

Der französische Mathematiker Fabrice Bellard, der einst die Projekte QEMU und FFmpeg gründete, außerdem die schnellste Formel zur Berechnung von Pi entwickelte und das Bildformat entwickelte BPG, veröffentlichte die erste Version einer neuen JavaScript-Engine QuickJS. Die Engine ist kompakt und auf die Einbettung in andere Systeme ausgerichtet. Der Projektcode ist in C geschrieben und wird unter der MIT-Lizenz vertrieben. Außerdem ist eine Assembly der Engine verfügbar, die mit Emscripten zu WebAssembly kompiliert wurde und für die Ausführung in Browsern geeignet ist.

JavaScript-Implementierung unterstützt die die ES2019-Spezifikation, einschließlich Modulen, Asynchrongeneratoren und Proxys. Nicht standardmäßige Mathematikfunktionen werden optional unterstützt. Erweiterungen für JavaScript, wie die Typen BigInt und BigFloat, sowie Überlastung des Bedieners. In Bezug auf die Leistung ist QuickJS von Bedeutung übertrifft bestehende Analoga zum Beispiel im Test
Der Bank-V8 ist dem Motor voraus XS von 35% Klebeband mehr als zweimal Jerryscript dreimal und MuJS sieben mal.

Neben der Bibliothek zur Einbettung der Engine in Anwendungen bietet das Projekt auch den qjs-Interpreter, mit dem sich JavaScript-Code über die Kommandozeile ausführen lässt. Darüber hinaus ist der qjsc-Compiler verfügbar, der eigenständige ausführbare Dateien generieren kann, die keine externen Abhängigkeiten erfordern.

Hauptmerkmale:

  • Kompakt und einfach in andere Projekte integrierbar. Der Code enthält nur wenige C-Dateien, für deren Erstellung keine externen Abhängigkeiten erforderlich sind. Die kompilierte einfache Anwendung benötigt etwa 190 KB;
  • Sehr hohe Leistung und kurze Startzeit. Das Bestehen von 56 ECMAScript-Kompatibilitätstests dauert etwa 100 Sekunden, wenn es auf einem einzelnen Kern eines typischen Desktop-PCs ausgeführt wird. Die Laufzeitinitialisierung dauert weniger als 300 Mikrosekunden;
  • Nahezu vollständige Unterstützung für die ES2019-Spezifikation und vollständige Unterstützung für Anhang B, der Komponenten für die Kompatibilität mit älteren Webanwendungen definiert;
  • Vollständiges Bestehen aller Tests der ECMAScript Test Suite;
  • Unterstützung für das Kompilieren von Javascript-Code in ausführbare Dateien ohne externe Abhängigkeiten;
  • Referenzgezählter Garbage Collector ohne Bereinigungszyklus, der ein vorhersehbares Verhalten und einen reduzierten Speicherverbrauch ermöglichte;
  • Eine Reihe von Erweiterungen für mathematische Berechnungen in der JavaScript-Sprache;
  • Eine Shell zum Ausführen von Code im Befehlszeilenmodus, die kontextbezogene Codehervorhebung unterstützt;
  • Eine kompakte Standardbibliothek mit Bindungen über die C-Bibliothek.

Das Projekt entwickelt außerdem drei begleitende C-Bibliotheken, die an QuickJS beteiligt sind und für eine separate Anwendung geeignet sind:

  • libregexp ist eine schnelle Implementierung regulärer Ausdrücke, die vollständig mit der Javascript ES 2019-Spezifikation kompatibel ist;
  • libunicode – eine kompakte Bibliothek für die Arbeit mit Unicode;
  • libbf ist eine Implementierung von Gleitkommaoperationen mit beliebiger Genauigkeit und transzendenten Funktionen zur exakten Rundung.

Source: opennet.ru

Kommentar hinzufügen