QEMU og FFmpeg-stifter udgiver QuickJS JavaScript Engine

Den franske matematiker Fabrice Bellard, som engang grundlagde QEMU- og FFmpeg-projekterne, og som også skabte den hurtigste formel til beregning af pi og udviklede billedformatet BPG, udgav den første udgivelse af en ny JavaScript-motor QuickJS. Motoren er kompakt og fokuseret på indlejring i andre systemer. Projektkoden er skrevet i C og distribueret under MIT-licensen. Også tilgængelig er en samling af motoren kompileret til WebAssembly ved hjælp af Emscripten og egnet til udførelse i browsere.

JavaScript implementering bakker op ES2019-specifikationen, inklusive moduler, asynkrone generatorer og proxyer. Ikke-standard matematik er valgfrit understøttet. udvidelse til JavaScript, såsom BigInt- og BigFloat-typerne, samt operatør overbelastning. Med hensyn til ydeevne er QuickJS betydelig bedre end eksisterende analoger, for eksempel i testen
bench-v8 er foran motoren XS med 35 %, duktape mere end to gange jerryscript tre gange og MuJS syv gange.

Udover biblioteket til indlejring af motoren i applikationer tilbyder projektet også qjs-fortolkeren, som kan bruges til at køre JavaScript-kode fra kommandolinjen. Desuden er qjsc-kompileren tilgængelig, som er i stand til at generere selvstændige eksekverbare filer, der ikke kræver eksterne afhængigheder.

Hovedtræk:

  • Kompakt og nem at integrere i andre projekter. Koden indeholder kun nogle få C-filer, der ikke kræver eksterne afhængigheder at bygge. Den kompilerede simple applikation tager omkring 190 KB;
  • Meget høj ydeevne og lav opstartstid. At bestå 56 ECMAScript-kompatibilitetstest tager omkring 100 sekunder, når det udføres på en enkelt kerne på en typisk stationær pc. Runtime initialisering tager mindre end 300 mikrosekunder;
  • Næsten fuld understøttelse af ES2019-specifikationen og fuld understøttelse af Annex B, som definerer komponenter til kompatibilitet med ældre webapplikationer;
  • Fuldstændig beståelse af alle test fra ECMAScript Test Suite;
  • Understøttelse af kompilering af Javascript-kode til eksekverbare filer uden eksterne afhængigheder;
  • Referencetalt skraldeopsamler uden oprydningscyklus, hvilket muliggjorde forudsigelig adfærd og reduceret hukommelsesforbrug;
  • Et sæt udvidelser til matematiske beregninger i JavaScript-sproget;
  • En shell til at udføre kode i kommandolinjetilstand, der understøtter kontekstuel kodefremhævning;
  • Et kompakt standardbibliotek med bindinger over C-biblioteket.

Projektet udvikler også tre ledsagende C-biblioteker involveret i QuickJS og egnet til en separat applikation:

  • libregexp er en hurtig implementering af regulære udtryk, der er fuldt ud kompatibel med Javascript ES 2019-specifikationen;
  • libunicode - et kompakt bibliotek til at arbejde med Unicode;
  • libbf er en implementering af vilkårlige præcisionsoperationer med flydende komma og eksakte afrundende transcendentale funktioner.

Kilde: opennet.ru

Tilføj en kommentar