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

Der französische Mathematiker Fabrice Bellard, der einst Projekte wie QEMU, FFmpeg, BPG, QuickJS, TinyGL und TinyCC ins Leben rief, hat eine neue JavaScript-Engine fĂŒr eingebettete Systeme veröffentlicht - Micro QuickJS. Diese kann JavaScript-Programme kompilieren und ausfĂŒhren und benötigt dabei nur 10 KB RAM. Zusammen mit der C-Bibliothek benötigt die Engine etwa 100 KB permanenten Speicher. Es ist möglich, JavaScript in Bytecode zu kompilieren und diesen separat auszufĂŒhren. Der Code des Projekts ist in C geschrieben und wird unter der MIT-Lizenz verbreitet.

Die Engine unterstĂŒtzt ein Subset der JavaScript-Sprache, das der ECMAScript 5-Spezifikation (ES2019) nahekommt, jedoch striktere Anforderungen an den Code stellt und die Verwendung bestimmter ineffizienter oder fehleranfĂ€lliger JavaScript-Konstrukte nicht erlaubt. 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 aufweisen, die Initialisierung bei der Deklaration wie „new Number(1)“ ist nicht erlaubt und der Zugriff auf lokale Variablen aus eval ist nicht möglich.

Die Leistung von Micro QuickJS ist vergleichbar mit dem von Fabrice seit 2019 entwickelten QuickJS-Engine. Micro QuickJS nutzt teilweise Code aus der QuickJS-Engine, jedoch unterscheidet sich die Architektur erheblich und wurde fĂŒr minimalen Speicherverbrauch konzipiert. Beispielsweise verwendet Micro QuickJS einen tracing Garbage Collector, wĂ€hrend QuickJS eine ReferenzzĂ€hlung nutzt. Die Overheadkosten des Garbage Collectors betragen nur wenige Bits fĂŒr jeden zugewiesenen Speicherblock. FĂŒr die Speicherzuweisung wird ein eigener Allocator verwendet, der nicht von der Bibliotheksfunktion malloc() abhĂ€ngt.

Weitere Unterschiede zu QuickJS: verwendet keinen Stack virtuelle Maschine; eine andere interne ReprÀsentation von Objekten; Speicherung von Strings in UTF-8-Kodierung; Generierung der Standardbibliothek wÀhrend der Kompilierung und deren Speicherung im permanenten Speicher, wobei im RAM nur wenige Objekte erstellt werden; ein nah an QuickJS, aber ohne Rekursion arbeitender Parser; Kombination von Bytecode-Generierung und Optimierung in einem Durchgang (QuickJS hat mehrere DurchgÀnge zur Optimierung).

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster