De oprichter van QEMU en FFmpeg heeft de Micro QuickJS JavaScript-engine gepubliceerd.

De Franse wiskundige Fabrice Bellard, oprichter van de QEMU-, FFmpeg-, BPG-, QuickJS-, TinyGL- en TinyCC-projecten, heeft een nieuwe JavaScript-engine voor embedded systemen gepubliceerd: Micro QuickJS. Deze engine kan JavaScript-programma's compileren en uitvoeren met een geheugenverbruik van slechts 10 KB RAM. Samen met de C-bibliotheek neemt de engine ongeveer 100 KB geheugen in beslag. De engine kan JavaScript compileren naar bytecode en deze bytecode vervolgens afzonderlijk uitvoeren. De code van het project is geschreven in C en wordt gedistribueerd onder de MIT-licentie.

De engine ondersteunt een subset van de JavaScript-taal die dicht bij de ECMAScript 5 (ES2019)-specificatie ligt, maar stelt strengere code-eisen en verbiedt het gebruik van bepaalde inefficiΓ«nte of foutgevoelige JavaScript-constructies. Zo moeten globale variabelen worden gedeclareerd met het sleutelwoord "var", is het gebruik van "with" verboden, mogen arrays niet leeg zijn, is initialisatie niet mogelijk met declaraties in de vorm "new Number(1)", en kunnen lokale variabelen niet worden benaderd vanuit eval.

De prestaties van Micro QuickJS liggen dicht bij die van de QuickJS-engine, die sinds 2019 door Fabrice is ontwikkeld. Micro QuickJS gebruikt deels dezelfde code als de QuickJS-engine, maar de architectuur is aanzienlijk anders en ontworpen voor minimaal geheugenverbruik. Zo gebruikt Micro QuickJS een tracing garbage collector, terwijl QuickJS referentietelling gebruikt. De overhead van de garbage collector bedraagt ​​slechts enkele bits per toegewezen geheugenblok. Geheugenallocatie maakt gebruik van een eigen allocator, onafhankelijk van de malloc()-bibliotheekfunctie.

Andere verschillen met QuickJS: gebruikt geen stack virtuele machineEen andere interne representatie van objecten; het opslaan van strings in UTF-8-codering; het genereren van de standaardbibliotheek tijdens de compilatie en het opslaan ervan in permanent geheugen, waarbij slechts enkele objecten in het RAM-geheugen worden aangemaakt; een parser vergelijkbaar met QuickJS, maar zonder recursie; het combineren van bytecode-generatie en optimalisatie in één enkele stap (QuickJS heeft meerdere stappen voor optimalisatie).

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers πŸ”₯ Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster