Matematikani francez Fabrice Bellard, i cili dikur themeloi projekte si QEMU, FFmpeg, BPG, QuickJS, TinyGL dhe TinyCC, ka publikuar njĂ« motor JavaScript tĂ« ri pĂ«r sistemet e integruara â Micro QuickJS, i cili Ă«shtĂ« nĂ« gjendje tĂ« kompilihet dhe ekzekutojĂ« programe JavaScript, duke konsumuar vetĂ«m 10 KB RAM. SĂ« bashku me bibliotekĂ«n C, motori merr rreth 100 KB memorie tĂ« pĂ«rhershme. ĂshtĂ« e mundur tĂ« kompilohet JavaScript nĂ« bajt kod dhe tĂ« ekzekutohet veçmas ky bajt kod. Kodi i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe shpĂ«rndahet nĂ«n licencĂ«n MIT.
Motoja mbĂ«shtet njĂ« nĂ«ngrup tĂ« gjuhĂ«s JavaScript, e cila Ă«shtĂ« e afĂ«rt me specifikimin ECMAScript 5 (ES2019), por ka kĂ«rkesa mĂ« tĂ« rrepta pĂ«r kodin dhe nuk lejon pĂ«rdorimin e disa konstrukcioneve JavaScript qĂ« janĂ« joefikase ose qĂ« shkaktojnĂ« gabime. PĂ«r shembull, variablat globale duhet tĂ« shpallen domosdoshmĂ«risht me fjalĂ«n kyçe âvarâ, pĂ«rdorimi i âwithâ Ă«shtĂ« i ndaluar, vargjet nuk mund tĂ« kenĂ« boshllĂ«qe, inicializimi i deklaratave si ânew Number(1)â nuk Ă«shtĂ« i mundur, dhe nuk Ă«shtĂ« e mundur qĂ« tĂ« aksesohen variablat lokale nga eval.
Performanca e Micro QuickJS është afërsisht e barabartë me motorin QuickJS, i zhvilluar nga Fabrice që nga viti 2019. Micro QuickJS përdor një pjesë të kodit nga motorri QuickJS, por arkitektura është shumë e ndryshme dhe është projektuar për konsum minimal të memories. Për shembull, në Micro QuickJS është përdorur një mbledhës ndihmës që gjurmon, ndërsa në QuickJS është përdorur numërimi i referencave. Shpenzimet e mbledhësit ndihmës janë vetëm disa bita për çdo bllok të përkrahuar të memories. Për alokimin e memories, përdoret një alokator i brendshëm, i pavarur nga funksioni bibliotekor malloc().
Dallimet e tjera nga QuickJS: nuk përdor një stek; një përfaqësim të ndryshëm të brendshëm të objekteve; ruajtja e vargjeve në kodimin UTF-8; gjenerimi i bibliotekës standarde gjatë kompilimit dhe ruajtja e saj në memorie të përhershme me krijimin në RAM të disa objekteve; një parser që është afër QuickJS, por që nuk përdor rekursivitet; bashkimin në një kalim të vetëm të gjenerimit të bajt kodit dhe optimizimit (në QuickJS ka disa kalime për optimizim). makina virtualeMatematikani francez Fabrice Bellard, i cili dikur themeloi projekte QEMU, FFmpeg, BPG, QuickJS, TinyGL dhe TinyCC, ka publikuar një motor JavaScript të ri për sistemet e integruara - Micro QuickJS.
Burimi: opennet.ru
