Prantsuse matemaatik Fabrice Bellard, kes lõi projektid QEMU ja FFmpeg, samuti välja töötas kiireima valemi pi arvelemiseks ja piltide formaadi, , avaldas uue JavaScripti mootorite esimese väljaande, . Mootor on kompaktne ja suunatud teiste süsteemide integreerimisele. Projekti kood on kirjutatud C keeles ja levitatakse MIT litsentsi alusel. Samuti on saadaval mootori versioon, mis on kompileeritud WebAssembly-le Emscripteni abil ja sobib brauserites töötamiseks.
JavaScripti rakendamine ES2019 spetsifikatsiooni, sealhulgas mooduleid, asünkroonseid generaatoreid ja proksisid. Valikaliselt toetatakse mittestandardseid matemaatilisi JavaScripti omadusi, nagu BigInt ja BigFloat tüübid, samuti . QuickJS ületab oluliselt bench-v8, ületab see mootori
XS DukTape'i JerryScripti MuJS-i Lisaks rakenduse integreerimise raamatukogule pakub projekt ka qjs tõlki, mida saab kasutada JavaScripti koodi käivitamiseks käsurealt. Veelgi enam, saadaval on qjsc kompilaator, mis suudab genereerida eraldi käitatavad failid, mis ei vaja väliseid sõltuvusi.
Kompaktsus ja lihtsus teiste projektide integreerimisel. Kood sisaldab vaid mõnda C keeles kirjutatud faili, mis ei vaja kogumiseks väliseid sõltuvusi. Kompilleeritud kõige lihtsam rakendus võtab umbes 190 Kb;
Põhiomadused:
- Väga kõrge jõudlus ja madal käivitusaeg. 56 000 testist, mis kontrollivad ECMAScripti ühilduvust, läbimine võtab tavalise lauaarvuti ühel tuumal umbes 100 sekundit. Aeg runtime'i initsialiseerimiseks on vähem kui 300 mikrosekundit;
- Peaaegu täielik ES2019 spetsifikatsiooni tugi ja täielik rakenduse B tugi, mis määratleb elemendid vanade veebi rakenduste ühilduvuse tagamiseks;
- Kõikide ECMAScript Test Suite'i testide täielik läbimine;
- Toetab JavaScripti koodi kompileerimist käitatavateks failideks, mis ei vaja väliseid sõltuvusi;
- Järelkorraga jäätmekorjaja, mis põhineb viidete arvel ja ei teosta tsüklilisi puhastusprotsesse, mis on võimaldanud saavutada ettearvatavat käitumist ja vähendada mälutarbimist;
- Сборщик мусора на основе подсчёта ссылок без цикличного выполнения чистки, позволивший добиться предсказуемого поведения и снижения потребления памяти;
- JavaScripti matemaatilisi arvutusi teostav laienduste komplekt;
- Koodide täitmise kest, mis toetab koodi kontekstitundlikku esiletõstmist;
- Kompaktne standardraamatukogu, mis pakub C-teekide ümberpakendusi.
Projektis arendatakse ka kolme seotud C-raamatukogu, mis on kasutusel QuickJS-is ja sobivad eraldi kasutamiseks:
- libregexp — kiire regulaaravaldiste rakendus, mis on täielikult ühilduv JavaScripti ES 2019 spetsifikatsiooniga;
- libunicode — kompaktne raamatukogu Unicode'i töötlemiseks;
- libbf — ebatäpse täpsusega ujuvapunkti operatsioonide ja transsendentsete funktsioonide rakendus täpse ümardamisega.
Allikas: opennet.ru
