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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster