Zakladateľ QEMU a FFmpeg uverejnil JavaScript engine Micro QuickJS

Francúzsky matematik Fabrice Bellard, zakladateľ projektov QEMU, FFmpeg, BPG, QuickJS, TinyGL a TinyCC, publikoval nový JavaScriptový engine pre zabudované systémy — Micro QuickJS, ktorý dokáže kompilovať a vykonávať JavaScriptové programy, pričom spotrebuje iba 10 kB RAM. Spolu so C knižnicou engine zaberá približne 100 kB trvalej pamäte. Je možná kompilácia JavaScriptu do bytkódu a samostatné spustenie bytkódu. Kód projektu je napísaný v jazyku C a je distribuovaný pod licenciou MIT.

Engine podporuje podmnožinu jazyka JavaScript, ktorá je blízka špecifikácii ECMAScript 5 (ES2019), ale kladie prísnejšie požiadavky na kód a nedovoľuje používanie niektorých neefektívnych alebo chybových JavaScriptových konštrukcií. Napríklad globálne premenné musia byť nevyhnutne deklarované pomocou kľúčového slova 'var', zakázané je používanie 'with', polia nemôžu mať medzery, nie je možná inicializácia pri deklarácii formátu 'new Number(1)', z eval nie je možný prístup k lokálnym premenným.

Výkon Micro QuickJS je blízky engine QuickJS, ktorý vyvíja Fabrice od roku 2019. V Micro QuickJS je zapojená časť kódu z engine QuickJS, ale architektúra sa do značnej miery líši a je navrhnutá na minimálnu spotrebu pamäte. Napríklad v Micro QuickJS je použitý trasovací garbage collector, zatiaľ čo v QuickJS je použitý počítanie referencií. Opýtavé náklady garbage collectora predstavujú iba niekoľko bitov na každý pridelený blok pamäte. Na pridelenie pamäte sa používa vlastný alokátor, ktorý nezávisí od knižnicovej funkcie malloc().

Ďalšie rozdiely od QuickJS: nepoužíva zásobník; iné interné zobrazenie objektov; ukladanie reťazcov v kódovaní UTF-8; generovanie štandardnej knižnice počas kompilácie a jej ukladanie v trvalej pamäti s vytvorením v RAM iba niekoľkých objektov; parser, ktorý je blízky QuickJS, ale nepoužíva rekurziu; kombinovanie v jednom priechode generovania bytkódu a optimalizácie (v QuickJS je niekoľko priechodov na optimalizáciu). virtuálna mašinaFrançaisky matematik Fabrice Bellard, zakladateľ projektov QEMU, FFmpeg, BPG, QuickJS, TinyGL a TinyCC, publikoval nový JavaScriptový engine pre zabudované systémy - Micro QuickJS.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster