QEMU sareng FFmpeg Ngadegkeun Nerbitkeun Mesin JavaScript QuickJS

Matematikawan Perancis Fabrice Bellard, anu ngadegkeun proyék QEMU sareng FFmpeg, ogé nyiptakeun rumus panggancangna pikeun ngitung nomer Pi sareng ngembangkeun format gambar. GDP, diterbitkeun release mimiti mesin JavaScript anyar QuickJS. Mesinna kompak sareng dirancang pikeun integrasi kana sistem anu sanés. Kodeu proyék ditulis dina C sareng disebarkeun dina lisénsi MIT. A ngawangun mesin oge sadia, disusun kana WebAssembly maké Emscripten tur cocog pikeun palaksanaan dina panyungsi.

Palaksanaan JavaScript ngadukung spésifikasi ES2019, kaasup modul, generator Asynchronous na proxy. Matematika non-standar dirojong sacara opsional ékspansi pikeun JavaScript, sapertos jenis BigInt sareng BigFloat, ogé operator overloading. Kinerja QuickJS penting unggul kana analogues sadia, contona, dina tés
bangku-v8 payuneun mesin XS dina 35%, DukTape leuwih ti dua kali jerryscript tilu kali jeung MuJS tujuh kali.

Salian perpustakaan pikeun embedding mesin kana aplikasi, proyék ogé nawarkeun hiji juru qjs, nu bisa dipaké pikeun ngajalankeun kode JavaScript tina garis paréntah. Sumawona, kompiler qjsc sayogi, sanggup ngahasilkeun file anu tiasa dieksekusi anu cocog pikeun palaksanaan nyalira anu henteu peryogi katergantungan éksternal.

Fitur konci:

  • Kompak sareng gampang ngahijikeun kana proyék sanés. Kodeu ngan ukur kalebet sababaraha file C anu henteu meryogikeun katergantungan éksternal pikeun assembly. Aplikasi pangbasajanna disusun nyokot ngeunaan 190 KB;
  • Kinerja anu luhur pisan sareng waktos ngamimitian anu pondok. Ngaliwatan 56 rébu tés kasaluyuan ECMAScript nyokot ngeunaan 100 detik lamun dieksekusi dina inti tunggal PC desktop biasa. Runtime initialization nyokot kirang ti 300 microseconds;
  • Pangrojong ampir pinuh pikeun spésifikasi ES2019 sareng dukungan lengkep pikeun Appendix B, anu netepkeun komponén pikeun kasaluyuan sareng aplikasi wéb warisan;
  • Lulus lengkep sadaya tés tina ECMAScript Test Suite;
  • Rojongan pikeun kompilasi kode Javascript kana file anu tiasa dieksekusi tanpa katergantungan éksternal;
  • A collector sampah dumasar kana rujukan cacah tanpa beberesih siklik, nu diwenangkeun urang pikeun ngahontal kabiasaan diprediksi jeung ngurangan konsumsi memori;
  • Hiji set ekstensi pikeun itungan matematik dina JavaScript;
  • Cangkang pikeun ngaéksekusi kode dina modeu garis paréntah, ngadukung panyorot kodeu kontekstual;
  • Perpustakaan standar kompak sareng bungkus dina perpustakaan C.

Proyék ieu ogé ngembangkeun tilu perpustakaan C anu ngiringan dina QuickJS sareng cocog pikeun panggunaan individu:

  • libregexp - palaksanaan gancang ekspresi biasa, sapinuhna cocog sareng spésifikasi Javascript ES 2019;
  • libunicode - perpustakaan kompak pikeun gawé bareng Unicode;
  • libbf - Palaksanaan operasi titik floating precision sawenang jeung fungsi transcendental kalawan rounding pasti.

sumber: opennet.ru

Tambahkeun komentar