Il fondatore di QEMU e FFmpeg ha pubblicato il motore JavaScript Micro QuickJS.

Il matematico francese Fabrice Bellard, fondatore di progetti come QEMU, FFmpeg, BPG, QuickJS, TinyGL e TinyCC, ha pubblicato un nuovo motore JavaScript per sistemi embedded - Micro QuickJS, in grado di compilare ed eseguire programmi JavaScript usando solo 10 KB di RAM. Insieme alla libreria in C, il motore occupa circa 100 KB di memoria permanente. È possibile compilare JavaScript in bytecode e avviarlo separatamente. Il codice del progetto è scritto in C e distribuito con licenza MIT.

Il motore supporta un sottoinsieme del linguaggio JavaScript, vicino alla specifica ECMAScript 5 (ES2019), ma con requisiti di codice più rigorosi e non consente l'uso di alcune costrutti JavaScript inefficienti o che portano a errori. Ad esempio, le variabili globali devono essere dichiarate con la parola chiave "var", l'uso di "with" è vietato, gli array non possono contenere spazi vuoti, non è possibile inizializzare dichiarazioni come "new Number(1)", e l'accesso alle variabili locali da eval non è consentito.

Le prestazioni di Micro QuickJS sono simili a quelle del motore QuickJS, sviluppato da Fabrice dal 2019. Micro QuickJS utilizza parte del codice del motore QuickJS, ma l'architettura è molto diversa ed è progettata per un consumo minimo di memoria. Ad esempio, Micro QuickJS utilizza un garbage collector a tracciamento, mentre QuickJS è basato su conteggio dei riferimenti. Le spese generali del garbage collector ammontano a pochi bit per ogni blocco di memoria allocato. Per l'allocazione della memoria viene utilizzato un allocatore personalizzato, indipendente dalla funzione di libreria malloc().

Altre differenze rispetto a QuickJS: non utilizza lo stack macchina virtuale; una rappresentazione interna degli oggetti diversa; memorizzazione delle stringhe in codifica UTF-8; generazione della libreria standard durante la compilazione e la conservazione in memoria permanente con la creazione in RAM di solo pochi oggetti; un parser simile a QuickJS, ma che non utilizza la ricorsione; combinazione in un'unica passata della generazione di bytecode e ottimizzazione (in QuickJS ci sono più passaggi per l'ottimizzazione).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster