Fondatorul QEMU și FFmpeg a publicat motorul JavaScript QuickJS

Matematicianul francez Fabrice Bellard, care a fondat proiectele QEMU și FFmpeg, a creat și cea mai rapidă formulă pentru calcularea numărului Pi și a dezvoltat formatul imaginii BPG, a publicat prima versiune a noului motor JavaScript QuickJS. Motorul este compact și proiectat pentru integrarea în alte sisteme. Codul proiectului este scris în C și este distribuit sub licența MIT. Este disponibilă și o versiune a motorului, compilată în WebAssembly folosind Emscripten și potrivită pentru execuție în browsere.

Implementarea JavaScript suporturi Specificația ES2019, inclusiv module, generatoare asincrone și proxy. Matematicile non-standard sunt acceptate opțional expansiune pentru JavaScript, cum ar fi tipurile BigInt și BigFloat, precum și supraîncărcarea operatorului. Performanța QuickJS este semnificativă superior lui analogi disponibili, de exemplu, în test
bench-v8 este înaintea motorului XS cu 35%, DukTape mai mult decât dublat jerryscript de trei ori și MuJS de șapte ori.

Pe lângă biblioteca pentru încorporarea motorului în aplicații, proiectul oferă și un interpret qjs, care poate fi folosit pentru a rula cod JavaScript din linia de comandă. Mai mult, este disponibil compilatorul qjsc, capabil să genereze fișiere executabile de ieșire potrivite pentru execuție autonomă care nu necesită dependențe externe.

Caracteristici principale:

  • Compact și ușor de integrat în alte proiecte. Codul include doar câteva fișiere C care nu necesită dependențe externe pentru asamblare. Cea mai simplă aplicație compilată durează aproximativ 190 KB;
  • Performanță foarte ridicată și timp scurt de pornire. Trecerea a 56 de mii de teste de compatibilitate ECMAScript durează aproximativ 100 de secunde când este executată pe un singur nucleu al unui PC desktop obișnuit. Inițializarea timpului de rulare durează mai puțin de 300 de microsecunde;
  • Suport aproape complet pentru specificația ES2019 și suport complet pentru Anexa B, care definește componente pentru compatibilitatea cu aplicațiile web vechi;
  • Trecerea completă a tuturor testelor din ECMAScript Test Suite;
  • Suport pentru compilarea codului Javascript în fișiere executabile fără dependențe externe;
  • Un colector de gunoi bazat pe numărarea referințelor fără curățare ciclică, ceea ce ne-a permis să obținem un comportament previzibil și să reducem consumul de memorie;
  • Un set de extensii pentru calcule matematice în JavaScript;
  • Un shell pentru executarea codului în modul linie de comandă, care acceptă evidențierea contextuală a codului;
  • Bibliotecă standard compactă cu împachetare peste biblioteca C.

Proiectul dezvoltă, de asemenea, trei biblioteci C însoțitoare implicate în QuickJS și potrivite pentru utilizare individuală:

  • libregexp - implementare rapidă a expresiilor regulate, pe deplin compatibil cu specificația Javascript ES 2019;
  • libunicode - o bibliotecă compactă pentru lucrul cu Unicode;
  • libbf - Implementarea operațiilor în virgulă mobilă de precizie arbitrară și a funcțiilor transcendentale cu rotunjire exactă.

Sursa: opennet.ru

Adauga un comentariu