De Franse wiskundige Fabrice Bellard, die ooit de projecten QEMU en FFmpeg oprichtte, evenals de snelste formule voor het berekenen van Pi ontwikkelde en het afbeeldingsformaat BPG, , heeft de eerste versie van de nieuwe JavaScript-engine gepubliceerd. De engine is compact en gericht op integratie in andere systemen. De projectcode is geschreven in C en wordt verspreid onder de MIT-licentie. Ook is er een versie van de engine beschikbaar die in WebAssembly is gecompileerd met behulp van Emscripten en geschikt is voor gebruik in webbrowsers.
De implementatie van JavaScript volgt de specificatie ES2019, inclusief modules, asynchrone generatoren en proxies. Optioneel worden niet-standaard wiskundige types voor JavaScript ondersteund, zoals BigInt en BigFloat, evenals . Wat prestaties betreft overtreft QuickJS aanzienlijk bench-v8 overtreft het motortje
XS DukTape JerryScript MuJS Naast de bibliotheek voor integratie van de motor in applicaties biedt het project ook de interpreter qjs aan, die kan worden gebruikt om JavaScript-code vanuit de opdrachtregel uit te voeren. Bovendien is er een compiler qjsc beschikbaar die uitvoerbare bestanden kan genereren die geschikt zijn voor onafhankelijke uitvoering zonder externe afhankelijkheden.
Compactheid en eenvoud van integratie in andere projecten. De code omvat slechts een paar C-bestanden, die geen externe afhankelijkheden vereisen voor compilatie. Een eenvoudig gecompileerde applicatie neemt ongeveer 190 kB in beslag;
Belangrijkste kenmerken:
- Zeer hoge prestaties en een korte opstarttijd. Het doorlopen van 56.000 tests voor compatibiliteit met ECMAScript duurt ongeveer 100 seconden wanneer uitgevoerd op ƩƩn core van een gewone desktop-pc. De initialisatie van de runtime kost minder dan 300 microseconden;
- Bijna volledige ondersteuning van de ES2019-specificatie en volledige ondersteuning van de applicatie 'B', die componenten definieert voor compatibiliteit met oudere webapplicaties;
- Volledige doorloop van alle testen uit de ECMAScript Test Suite;
- Ondersteuning voor het compileren van JavaScript-code naar uitvoerbare bestanden zonder externe afhankelijkheden;
- Een garbage collector op basis van referentietelling zonder cyclische opruimoperaties, wat heeft geleid tot voorspelbaar gedrag en een verminderd geheugengebruik;
- Een garbage collector op basis van referentietelling zonder cyclische opruiming, wat voorspelbaar gedrag en een lager geheugenverbruik mogelijk maakt.
- Een set extensies voor wiskundige berekeningen in de programmeertaal JavaScript;
- Een shell voor het uitvoeren van code in de opdrachtregelmodus, met ondersteuning voor syntaxhighlighting;
- Een compacte standaardbibliotheek met wrappers bovenop de C-bibliotheek.
Het project ontwikkelt ook drie bijbehorende C-bibliotheken, gebruikt in QuickJS en geschikt voor afzonderlijk gebruik:
- libregexp ā een snelle implementatie van reguliere expressies, volledig compatibel met de specificatie van Javascript ES 2019;
- libunicode ā een compacte bibliotheek voor het omgaan met Unicode;
- libbf ā een implementatie van bewerkingen met zwevende komma met een willekeurige nauwkeurigheid en transcendente functies met nauwkeurige afronding.
Bron: opennet.ru
