Il fondatore di QEMU e FFmpeg pubblica il motore JavaScript QuickJS

Il matematico francese Fabrice Bellard, che una volta fondò i progetti QEMU e FFmpeg, creò anche la formula più veloce per calcolare pi greco e sviluppò il formato dell'immagine BPG, ha pubblicato la prima versione di un nuovo motore JavaScript QuickJS. Il motore è compatto e focalizzato sull'integrazione in altri sistemi. Il codice del progetto è scritto in C e distribuito sotto licenza MIT. È disponibile anche un assembly del motore compilato in WebAssembly utilizzando Emscripten e adatto per l'esecuzione nei browser.

Implementazione JavaScript поддерживает la specifica ES2019, inclusi moduli, generatori asincroni e proxy. La matematica non standard è supportata facoltativamente. espansione per JavaScript, come i tipi BigInt e BigFloat, nonché sovraccarico dell'operatore. In termini di prestazioni, QuickJS è significativo supera analoghi esistenti, ad esempio, nel test
bench-v8 è davanti al motore XS di 35% duktape più di due volte jerryscript tre volte e MuJS sette volte.

Oltre alla libreria per incorporare il motore nelle applicazioni, il progetto offre anche l'interprete qjs, che può essere utilizzato per eseguire codice JavaScript dalla riga di comando. Inoltre è disponibile il compilatore qjsc, in grado di generare file eseguibili standalone che non necessitano di dipendenze esterne.

Caratteristiche principali:

  • Compatto e facile da integrare in altri progetti. Il codice include solo pochi file C che non richiedono la compilazione di dipendenze esterne. La semplice applicazione compilata occupa circa 190 KB;
  • Prestazioni molto elevate e tempi di avvio ridotti. Il superamento di 56mila test di compatibilità ECMAScript richiede circa 100 secondi se eseguito su un singolo core di un tipico PC desktop. L'inizializzazione del runtime richiede meno di 300 microsecondi;
  • Supporto quasi completo per la specifica ES2019 e supporto completo per l'allegato B, che definisce i componenti per la compatibilità con le applicazioni Web precedenti;
  • Superamento completo di tutti i test della ECMAScript Test Suite;
  • Supporto per la compilazione di codice Javascript in file eseguibili senza dipendenze esterne;
  • Garbage Collector con conteggio dei riferimenti senza ciclo di pulizia, che ha consentito un comportamento prevedibile e un consumo di memoria ridotto;
  • Un insieme di estensioni per calcoli matematici nel linguaggio JavaScript;
  • Una shell per l'esecuzione di codice in modalità riga di comando che supporta l'evidenziazione contestuale del codice;
  • Una libreria standard compatta con binding sulla libreria C.

Il progetto sviluppa anche tre librerie C complementari coinvolte in QuickJS e adatte per un'applicazione separata:

  • libregexp è un'implementazione veloce di espressioni regolari completamente conforme alla specifica Javascript ES 2019;
  • libunicode - una libreria compatta per lavorare con Unicode;
  • libbf è un'implementazione di operazioni in virgola mobile di precisione arbitraria e funzioni trascendentali di arrotondamento esatto.

Fonte: opennet.ru

Aggiungi un commento