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

Der französische Mathematiker Fabrice Bellard, der einst die Projekte QEMU, FFmpeg, BPG, QuickJS, TinyGL und TinyCC ins Leben rief, hat eine neue JavaScript-Engine für eingebettete Systeme veröffentlicht – Micro QuickJS, die in der Lage ist, JavaScript-Programme zu kompilieren und auszuführen und dabei nur 10 KB RAM zu verbrauchen. Zusammen mit der C-Bibliothek benötigt die Engine etwa 100 KB Flash-Speicher. Eine Kompilierung von JavaScript in Bytecode und das separate Ausführen des Bytecodes sind möglich. Der Code des Projekts ist in C geschrieben und steht unter der MIT-Lizenz.

Die Engine unterstützt ein Teilmenge der JavaScript-Sprache, die der ECMAScript 5 (ES2019) Spezifikation nahe kommt, jedoch strengere Anforderungen an den Code stellt und die Verwendung gewisser ineffizienter oder fehleranfälliger JavaScript-Konstrukte nicht zulässt. Beispielsweise müssen globale Variablen zwingend mit dem Schlüsselwort „var“ deklariert werden, die Verwendung von „with“ ist verboten, Arrays dürfen keine Lücken haben, eine Initialisierung im Format „new Number(1)“ ist nicht möglich, und eval hat keinen Zugriff auf lokale Variablen.

Die Leistung von Micro QuickJS ist vergleichbar mit der Engine QuickJS, die von Fabrice seit 2019 entwickelt wird. In Micro QuickJS wird ein Teilcode aus der QuickJS-Engine verwendet, jedoch unterscheidet sich die Architektur erheblich und ist für einen minimalen Speicherverbrauch konzipiert. Zum Beispiel verwendet Micro QuickJS einen tracing Garbage Collector, während QuickJS Referenzzählung nutzt. Die Overhead-Kosten des Garbage Collectors betragen nur einige Bits pro zugewiesenem Speicherblock. Für die Speicherzuweisung wird ein eigener Allocator verwendet, der nicht von der Bibliotheksfunktion malloc() abhängt.

Weitere Unterschiede zu QuickJS: kein Einsatz des Stacks eine virtuelle Maschine; eine andere interne Darstellung von Objekten; Speicherung von Strings in UTF-8-Codierung; Generierung der Standardbibliothek während der Kompilierung und deren Speicherung im Flash-Speicher, wobei im RAM lediglich einige Objekte erstellt werden; ein Parser, der dem QuickJS ähnlich ist, jedoch keine Rekursion verwendet; Kombination von Bytecode-Generierung und Optimierung in einem Durchgang (in QuickJS gibt es mehrere Durchgänge zur Optimierung).

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster