Den franske matematiker Fabrice Bellard, som engang grundlagde projekterne QEMU, FFmpeg, BPG, QuickJS, TinyGL og TinyCC, har offentliggjort en ny JavaScript-motor til indlejrede systemer - Micro QuickJS, der kan kompilere og køre JavaScript-programmer med et forbrug på kun 10 KB RAM. Sammen med C-biblioteket kræver motoren cirka 100 KB konstant hukommelse. Der er mulighed for at kompilere JavaScript til bytkode og køre bytkode separat. Projektets kode er skrevet i C og distribueres under MIT-licensen.
Motoren understøtter et subset af JavaScript-sproget, der ligger tæt på specifikationen ECMAScript 5 (ES2019), men som stiller strengere krav til koden og ikke tillader brugen af visse ineffektive eller fejlbehæftede JavaScript-konstruktioner. For eksempel skal globale variable altid deklareres med nøgleordet «var», brugen af «with» er forbudt, arrays må ikke have hul, og det er ikke muligt at initialisere ved deklaration af typen «new Number(1)», ligesom adgang til lokale variabler fra eval er umulig.
Ydelsen af Micro QuickJS er tæt på motoren QuickJS, som Fabrice har udviklet siden 2019. Micro QuickJS bruger en del af koden fra QuickJS, men arkitekturen adskiller sig i høj grad og er designet til minimalt hukommelsesforbrug. For eksempel bruger Micro QuickJS en tracing garbage collector, mens QuickJS anvender reference counting. Omkostningerne ved garbage collectoren udgør kun et par bits pr. tildelt hukommelsesblok. Der bruges en egen allocator til hukommelsestildeling, der ikke afhænger af biblioteksfunktionen malloc().
Andre forskelle fra QuickJS: bruger ikke en stak; anderledes intern repræsentation af objekter; opbevaring af strenge i UTF-8-kodning; generering af standardbiblioteket under kompilering og dets opbevaring i konstant hukommelse med kun et par objekter i RAM; en parser, der ligner QuickJS, men ikke bruger rekursion; kombination af bytekodegenerering og optimering i én omgang (QuickJS har flere gange til optimering). virtual machineDen franske matematiker Fabrice Bellard, som engang grundlagde projekterne QEMU, FFmpeg, BPG, QuickJS, TinyGL og TinyCC, har offentliggjort en ny JavaScript-motor til indlejrede systemer - Micro QuickJS.
Kilde: opennet.ru
