Pendhiri QEMU lan FFmpeg nerbitake mesin JavaScript QuickJS

Matématikawan Prancis Fabrice Bellard, sing ngedegake proyek QEMU lan FFmpeg, uga nggawe rumus paling cepet kanggo ngitung Pi lan ngembangake format gambar. GDP, nerbitake rilis pisanan mesin JavaScript anyar QuickJS. Mesin kasebut kompak lan dirancang kanggo integrasi menyang sistem liyane. Kode proyek ditulis ing C lan disebarake miturut lisensi MIT. A mbangun mesin uga kasedhiya, nyawiji menyang WebAssembly nggunakake Emscripten lan cocok kanggo eksekusi ing browser.

Implementasi JavaScript ndhukung Spesifikasi ES2019, kalebu modul, generator asinkron lan proxy. Matematika non-standar didhukung kanthi opsional ekspansi kanggo JavaScript, kayata jinis BigInt lan BigFloat, uga operator overloading. Kinerja QuickJS penting unggul kanggo Analog kasedhiya, contone, ing test
bench-v8 iku ahead saka engine XS ing 35%, DukTape luwih saka pindho jerryscript kaping telu lan MuJS kaping pitu.

Saliyane perpustakaan kanggo embedding mesin menyang aplikasi, project uga nawakake interpreter qjs, kang bisa digunakake kanggo mbukak kode JavaScript saka baris printah. Kajaba iku, compiler qjsc kasedhiya, bisa ngasilake file eksekusi output sing cocog kanggo eksekusi mandiri sing ora mbutuhake dependensi eksternal.

Fitur utama:

  • Kompak lan gampang digabungake menyang proyek liyane. Kode kasebut mung kalebu sawetara file C sing ora mbutuhake dependensi eksternal kanggo perakitan. Aplikasi sing paling gampang dikompilasi mbutuhake udakara 190 KB;
  • Kinerja dhuwur banget lan wektu wiwitan sing cendhak. Nglewati 56 ewu tes kompatibilitas ECMAScript mbutuhake udakara 100 detik nalika dieksekusi ing inti siji saka PC desktop biasa. Inisialisasi runtime njupuk kurang saka 300 mikrodetik;
  • Dhukungan meh lengkap kanggo spesifikasi ES2019 lan dhukungan lengkap kanggo Apendiks B, sing nemtokake komponen kanggo kompatibilitas karo aplikasi web warisan;
  • Ngrampungake kabeh tes saka ECMAScript Test Suite;
  • Dhukungan kanggo nyusun kode Javascript menyang file sing bisa dieksekusi tanpa dependensi eksternal;
  • A kolektor sampah adhedhasar pancacahan referensi tanpa reresik cyclic, kang ngidini kita kanggo entuk prilaku katebak lan nyuda konsumsi memori;
  • Sakumpulan ekstensi kanggo petungan matematika ing JavaScript;
  • Cangkang kanggo ngeksekusi kode ing mode baris perintah, ndhukung panyorot kode kontekstual;
  • Pustaka standar sing kompak kanthi bungkus ing perpustakaan C.

Proyèk iki uga ngembangake telung perpustakaan C sing ana ing QuickJS lan cocog kanggo panggunaan individu:

  • libregexp - implementasine cepet saka ekspresi reguler, kanthi kompatibel karo spesifikasi Javascript ES 2019;
  • libunicode - perpustakaan kompak kanggo nggarap Unicode;
  • libbf - Implementasi operasi titik ngambang kanthi presisi lan fungsi transendental kanthi pembulatan sing tepat.

Source: opennet.ru

Add a comment