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, , veröffentlichte die erste Ausgabe des neuen JavaScript-Engines . 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 entspricht der ES2019-Spezifikation und umfasst Module, asynchrone Generatoren und Proxys. Optional werden nicht standardmĂ€Ăige mathematische Modelle fĂŒr JavaScript unterstĂŒtzt, wie BigInt und BigFloat, sowie . In Bezug auf die Leistung ĂŒbertrifft QuickJS erheblich bench-v8 ĂŒbertrifft die Engine
XS DukTape JerryScript MuJS 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
