Den franske matematikern Fabrice Bellard, som grundade projekten QEMU och FFmpeg, samt skapade den snabbaste formeln för att berÀkna talet Pi och utvecklade bildformatet , har publicerat den första utgÄvan av en ny JavaScript-motor . Motorn Àr kompakt och Àr inriktad pÄ att integreras i andra system. Projektkoden Àr skriven i C och distribueras under MIT-licensen. En version av motorn finns ocksÄ tillgÀnglig, kompilera till WebAssembly med hjÀlp av Emscripten och lÀmplig för körning i webblÀsare.
Implementation av JavaScript specifikationen ES2019, inklusive moduler, asynkrona generatorer och proxies. Valfritt stöds icke-standardiserade matematiska funktioner för JavaScript, sÄsom typerna BigInt och BigFloat, samt . NÀr det gÀller prestanda övertrÀffar QuickJS vÀsentligt befintliga alternativ, till exempel i testet
bench-v8 som övertrÀffar motorn DukTape JerryScript MuJS med sju gÄnger.
Förutom biblioteket för att integrera motorn i applikationer, erbjuder projektet ocksÄ en tolk, qjs, som kan anvÀndas för att köra JavaScript-kod frÄn kommandoraden. Dessutom finns en kompilator, qjsc, som kan generera körbara filer som kan köras fristÄende utan externa beroenden.
Huvudfunktioner:
- Kompakthet och enkel integration i andra projekt. Koden bestÄr endast av nÄgra fÄ C-filer som inte krÀver externa beroenden för sammanstÀllning. Den sammanstÀllda enklaste applikationen tar upp cirka 190 Kb;
- Mycket hög prestanda och kort starttid. Genomförande av 56 000 tester för kompatibilitet med ECMAScript tar cirka 100 sekunder vid körning pÄ en kÀrna av en vanlig skrivborddator. Initiering av runtime tar mindre Àn 300 mikrosekunder;
- NÀstan fullstÀndig support för ES2019-specifikationen och fullstÀndig support för applikation "B", som definierar komponenter för kompatibilitet med Àldre webbapplikationer;
- FullstÀndig genomföring av alla tester frÄn ECMAScript Test Suite;
- Stöd för kompilering av JavaScript-kod till körbara filer utan externa beroenden;
- En skrÀpsamling baserad pÄ referensrÀkning utan cyklisk stÀdning, vilket möjliggör förutsÀgbart beteende och minskad minnesanvÀndning;
- Ett antal tillÀgg för matematiska berÀkningar i JavaScript;
- Ett skriptmiljö för att köra kod i kommandoradslÀge med stöd för syntaxmarkering.
- En kompakt standardbibliotek med bindningar till C-biblioteket.
Projektet utvecklar ocksÄ tre relaterade C-bibliotek som anvÀnds i QuickJS och Àr lÀmpliga för separat anvÀndning:
- libregexp â en snabb implementation av reguljĂ€ra uttryck som Ă€r helt kompatibla med JavaScript ES 2019-specifikationen;
- libunicode â ett kompakt bibliotek för att arbeta med Unicode;
- libbf â en implementation av operationer med flyttal av godtycklig precision och transcendentala funktioner med exakt avrundning.
KĂ€lla: opennet.ru
