Den franske matematiker Fabrice Bellard, der grundlagde projekterne QEMU og FFmpeg, samt skabte den hurtigste formel til beregning af tallet Pi og udviklede billedformatet , har udgivet den første version af den nye JavaScript-motor . Motoren er kompakt og designet til at blive integreret i andre systemer. Koden til projektet er skrevet i C og distribueres under MIT-licensen. Der er også en version af motoren, der er kompileret til WebAssembly ved hjælp af Emscripten og egnet til brug i webbrowsere.
Implementeringen af JavaScript specifikationen ES2019, inklusiv moduler, asynkrone generatorer og proxyer. Valgfrit understøttes ikke-standard matematiske funktioner til JavaScript, såsom typerne BigInt og BigFloat, samt . I ydeevne ligger QuickJS betydeligt for eksisterende alternativer, for eksempel i testen
bench-v8 slår motoren med 35%, mere end dobbelt så hurtig, tre gange hurtigere, og med syv gange.
Udover biblioteket til integration af motoren i applikationer tilbyder projektet også fortolkeren qjs, som kan bruges til at køre JavaScript-kode fra kommandolinjen. Desuden er kompilatoren qjsc tilgængelig, som kan generere selvstændige eksekverbare filer uden eksterne afhængigheder.
Hovedfunktioner:
- Kompakthed og enkel integration i andre projekter. Koden inkluderer kun et par filer i C, som ikke kræver eksterne afhængigheder for at blive samlet. En simpel kompileret applikation fylder omkring 190 KB;
- Meget høj ydeevne og kort opstartstid. Gennemførelse af 56.000 tests for kompatibilitet med ECMAScript tager omkring 100 sekunder, når det udføres på et enkelt kerne på en almindelig desktop-PC. Initialisering af runtime tager under 300 mikrosekunder;
- Næsten fuld støtte for specifikationen ES2019 og fuld støtte for applikationen 'B', der definerer komponenter til kompatibilitet med gamle webapplikationer;
- Fuldstændig gennemgang af alle tests fra ECMAScript Test Suite;
- Understøttelse af kompilering af JavaScript-kode til eksekverbare filer uden eksterne afhængigheder;
- En affaldsindsamler baseret på referenceoptælling uden cyklisk rydning, hvilket har resulteret i forudsigeligt adfærd og reduceret hukommelsesforbrug;
- Et sæt udvidelser til matematiske beregninger i JavaScript;
- En shell til at køre kode i kommandolinjemodus, der understøtter syntaksfarvning;
- En kompakt standardbibliotek med bindings til C-biblioteket.
Projektet udvikler også tre tilknyttede C-biblioteker, der bruges i QuickJS og er velegnede til selvstændig anvendelse:
- libregexp — en hurtig implementering af regulære udtryk, der er helt kompatible med JavaScript ES 2019-specifikationen;
- libunicode — et kompakt bibliotek til arbejde med Unicode;
- libbf — en implementering af flydende punktoperationer med vilkårlig præcision og transcendentale funktioner med præcis afrunding.
Kilde: opennet.ru
