Oprichter van QEMU en FFmpeg publiceert QuickJS JavaScript-engine

Franse wiskundige Fabrice Bellard, die ooit de QEMU- en FFmpeg-projecten heeft opgericht, en ook de snelste formule voor het berekenen van pi heeft gemaakt en het beeldformaat heeft ontwikkeld BPG, publiceerde de eerste release van een nieuwe JavaScript-engine SnelleJS. De motor is compact en gericht op inbedding in andere systemen. De projectcode is geschreven in C en gedistribueerd onder de MIT-licentie. Er is ook een assemblage van de engine beschikbaar die is gecompileerd naar WebAssembly met behulp van Emscripten en geschikt is voor uitvoering in browsers.

JavaScript-implementatie ondersteunt de de ES2019-specificatie, inclusief modules, asynchrone generatoren en proxy's. Niet-standaard wiskunde wordt optioneel ondersteund. uitbreiding voor JavaScript, zoals de typen BigInt en BigFloat, evenals overbelasting van de operator. Qua prestaties is QuickJS aanzienlijk superieur aan bestaande analogen bijvoorbeeld in de test
bench-v8 loopt voor op de motor XS met 35% plakband meer dan twee keer jerryscript drie keer en MuJS zeven keer.

Naast de bibliotheek voor het inbedden van de engine in applicaties, biedt het project ook de qjs-interpreter, die kan worden gebruikt om JavaScript-code vanaf de opdrachtregel uit te voeren. Bovendien is de qjsc-compiler beschikbaar, waarmee zelfstandige uitvoerbare bestanden kunnen worden gegenereerd waarvoor geen externe afhankelijkheden nodig zijn.

Основные особенности:

  • Compact en eenvoudig te integreren in andere projecten. De code bevat slechts een paar C-bestanden waarvoor geen externe afhankelijkheden nodig zijn om te bouwen. De gecompileerde eenvoudige applicatie neemt ongeveer 190 KB in beslag;
  • Zeer hoge prestaties en korte opstarttijd. Het doorstaan ​​van 56 ECMAScript-compatibiliteitstests duurt ongeveer 100 seconden wanneer uitgevoerd op een enkele kern van een typische desktop-pc. Runtime-initialisatie duurt minder dan 300 microseconden;
  • Bijna volledige ondersteuning voor de ES2019-specificatie en volledige ondersteuning voor bijlage B, die componenten definieert voor compatibiliteit met oudere webapplicaties;
  • Volledig slagen voor alle tests van de ECMAScript Test Suite;
  • Ondersteuning voor het compileren van Javascript-code in uitvoerbare bestanden zonder externe afhankelijkheden;
  • Referentie-getelde afvalverzamelaar zonder opruimcyclus, wat voorspelbaar gedrag en verminderd geheugenverbruik mogelijk maakte;
  • Een reeks uitbreidingen voor wiskundige berekeningen in de JavaScript-taal;
  • Een shell voor het uitvoeren van code in opdrachtregelmodus die contextuele code-accentuering ondersteunt;
  • Een compacte standaardbibliotheek met bindingen over de C-bibliotheek.

Het project ontwikkelt ook drie bijbehorende C-bibliotheken die betrokken zijn bij QuickJS en geschikt zijn voor een afzonderlijke toepassing:

  • libregexp is een snelle implementatie van reguliere expressies die volledig voldoet aan de Javascript ES 2019-specificatie;
  • libunicode - een compacte bibliotheek voor het werken met Unicode;
  • libbf is een implementatie van drijvende-kommabewerkingen met willekeurige precisie en transcendentale functies met exacte afronding.

Bron: opennet.ru

Voeg een reactie