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 , udgav den første udgivelse af en ny JavaScript-motor . 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 ES2019-specifikationen, inklusive moduler, asynkrone generatorer og proxyer. Ikke-standard matematik er valgfrit understøttet. til JavaScript, såsom BigInt- og BigFloat-typerne, samt . Med hensyn til ydeevne er QuickJS betydelig eksisterende analoger, for eksempel i testen
bench-v8 er foran motoren med 35 %, mere end to gange tre gange og 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
