Krijuesi i QEMU dhe FFmpeg publikoi motorin JavaScript Micro QuickJS

Matematikani francez Fabrice Bellard, i cili krijoi projekte si QEMU, FFmpeg, BPG, QuickJS, TinyGL dhe TinyCC, publikoi një motor të ri JavaScript për sistemet e përfshira — Micro QuickJS, i cili është në gjendje të kompilohet dhe ekzekutojë programe JavaScript, duke përdorur vetëm 10 KB RAM. Bashkë me bibliotekën C, motori zë afërsisht 100 KB memorie të përhershme. Është e mundur të kompilohet JavaScript në bytecode dhe të ekzekutohet veçmas bytecode. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën MIT.

Motori mbështet një nëngjyrë të gjuhës JavaScript, afërsisht në përputhje me specifikimin ECMAScript 5 (ES2019), por ka kërkesa më strikte për kodin dhe nuk pranon disa konstruksione JavaScript që janë të paefektshme ose shkaktojnë gabime. Për shembull, variablat globale duhet të shpallën domosdoshmërisht me fjalinë kyçe 'var', përdorimi i 'with' është i ndaluar, tabelat nuk mund të kenë boshllëqe, dhe inicializimi në deklaratën 'new Number(1)' nuk është i mundur; nuk ka qasje në variablat lokale nga eval.

Performanca e Micro QuickJS është e ngjashme me motorin QuickJS, i zhvilluar nga Fabrice që nga viti 2019. Në Micro QuickJS, përdoret një pjesë e kodit nga motori QuickJS, por arkitektura është ndryshe dhe projektuar për konsum minimal të memorjes. Për shembull, në Micro QuickJS ndodhet një mbledhës trashëgimie me ndihmën e gjurmëve, ndërsa në QuickJS përdoret numërimi i referencave. Shpenzimet e mbledhësit të trashëgimisë përbëjnë vetëm disa bit për çdo bllok memorjeje të alokuar. Për alokimin e memorjes përdoret një alokator i veçantë, që nuk varet nga funksioni bibliotekar malloc().

Dallime të tjera nga QuickJS: nuk përdor stek; makinë virtualepërfaqësimi i brendshëm i objekteve është i ndryshëm; ruajtja e vargjeve në kodimin UTF-8; gjenerimi i bibliotekës standarde gjatë kompilimit dhe ruajtja e saj në memorie të qëndrueshme me krijimin e disa objekteve në RAM; një parser që është i ngjashëm me QuickJS, por nuk përdor rekurzion; kombinimi në një kalim të vetëm të gjenerimit të kodit të bajtave dhe optimizimit (në QuickJS ka disa kalime për optimizim).

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster