Den franske matematikeren Fabrice Bellard, som en gang grunnla prosjektene QEMU og FFmpeg, samt skapte den raskeste formelen for beregning av tallet Pi og utviklet bildeformatet , har publisert den første utgaven av en ny JavaScript-motor. Motoren er kompakt og designet for integrering i andre systemer. Koden til prosjektet er skrevet i C og distribueres under MIT-lisensen. Det finnes også en versjon av motoren som er kompilert til WebAssembly med Emscripten og er egnet for kjøring i nettlesere.
Implementeringen av JavaScript spesifikasjonen ES2019, inkludert moduler, asynkrone generatorer og proxier. Valgfritt støttes ikke-standard matematiske funksjoner for JavaScript, som typene BigInt og BigFloat, samt . Når det gjelder ytelse, er QuickJS betydelig fremfor eksisterende alternativer; for eksempel i testen
bench-v8, overgår motoren DukTape JerryScript MuJS med syv ganger.
I tillegg til biblioteket for å integrere motoren i applikasjoner tilbyr prosjektet også tolkeren qjs, som kan brukes til å kjøre JavaScript-kode fra kommandolinjen. I tillegg er kompilatoren qjsc tilgjengelig, som er i stand til å generere kjørbare filer for isolert kjøring, uten eksterne avhengigheter.
Hovedfunksjoner:
- Kompakt og enkelt å integrere i andre prosjekter. Koden består kun av noen få filer i C, som ikke krever eksterne avhengigheter for kompilering. Det kompilert enkleste programmet tar omtrent 190 KB;
- Svært høy ytelse og kort oppstartstid. Å gjennomsøke 56 000 tester for kompatibilitet med ECMAScript tar omtrent 100 sekunder når det kjøres på en vanlig stasjonær PC med ett kjerner. Initialiseringen av runtime tar under 300 mikrosekunder;
- Nesten full støtte for spesifikasjonen ES2019 og full støtte for applikasjonen «B», som definerer komponenter for kompatibilitet med gamle web-applikasjoner;
- Full gjennomføring av alle tester fra ECMAScript Test Suite;
- Støtte for kompilering av JavaScript-kode til kjørbare filer uten eksterne avhengigheter;
- En søppeloppsamler basert på referansetelling uten syklisk utførelse av opprydning, som har oppnådd forutsigbart adferd og redusert minneforbruk;
- Et sett med utvidelser for matematiske beregninger på JavaScript;
- En kommandolinjeskall som støtter syntaksutheving for kode;
- Et kompakt standardbibliotek med innpakninger over C-biblioteket.
Prosjektet utvikler også tre tilknyttede C-biblioteker, brukt i QuickJS og egnet for separat bruk:
- libregexp — en rask implementering av regulære uttrykk, fullt kompatible med spesifikasjonen JavaScript ES 2019;
- libunicode — et kompakt bibliotek for arbeid med Unicode;
- libbf — en implementering av flyttallsoperasjoner av vilkårlig presisjon og transzendentalfunksjoner med nøyaktig avrunding.
Kilde: opennet.ru
