Fondatorul QEMU și FFmpeg a publicat motorul JavaScript Micro QuickJS

Matematicianul francez Fabrice Bellard, care a fondat proiectele QEMU, FFmpeg, BPG, QuickJS, TinyGL și TinyCC, a publicat un nou motor JavaScript pentru sisteme încorporate – Micro QuickJS, capabil să compileze și să execute programe JavaScript, consumând doar 10 KB de RAM. Împreună cu biblioteca C, motorul ocupă aproximativ 100 KB de memorie permanentă. Este posibilă compilarea JavaScript-ului în bytecode și execuția separată a bytecode-ului. Codul proiectului este scris în limbajul C și este distribuit sub licența MIT.

Motorul suportă un subset al limbajului JavaScript, apropiat de specificația ECMAScript 5 (ES2019), dar impune cerințe mai stricte asupra codului și nu permite utilizarea unor construcții JavaScript ineficiente sau care pot provoca erori. De exemplu, variabilele globale trebuie să fie declarate folosind cuvântul cheie „var”, utilizarea „with” este interzisă, array-urile nu pot avea elemente goale, inițializarea prin declarația „new Number(1)” nu este posibilă, iar accesul la variabilele locale din eval este imposibil.

Performanța Micro QuickJS este aproape de motorul QuickJS, dezvoltat de Fabrice din 2019. Micro QuickJS utilizează o parte din codul motorului QuickJS, dar arhitectura este în mare parte diferită și este proiectată pentru un consum minim de memorie. De exemplu, Micro QuickJS folosește un colector de gunoi de tip reclamă, în timp ce QuickJS utilizează numărarea referințelor. Costurile suplimentare ale colectorului de gunoi sunt de doar câțiva biți pentru fiecare bloc de memorie alocat. Pentru alocarea memoriei, se folosește un allocator propriu, independent de funcția de bibliotecă malloc().

Alte diferențe față de QuickJS: nu folosește stivă mașină virtuală; o reprezentare internă diferită a obiectelor; stocarea șirurilor în codificarea UTF-8; generarea bibliotecii standard în timpul compilării și stocarea acesteia în memorie permanentă cu crearea în RAM a doar câtorva obiecte; un parser similar cu QuickJS, dar fără utilizarea recursiei; combinarea într-o singură trecere a generării bytecode-ului și a optimizării (în QuickJS există mai multe treceri pentru optimizare).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster