Pendiri QEMU dan FFmpeg menerbitkan mesin JavaScript QuickJS

Matematikawan Perancis Fabrice Bellard, yang mendirikan proyek QEMU dan FFmpeg, juga menciptakan rumus tercepat untuk menghitung bilangan Pi dan mengembangkan format gambar PDB, menerbitkan rilis pertama mesin JavaScript baru JS Cepat. Mesinnya kompak dan dirancang untuk diintegrasikan ke sistem lain. Kode proyek ditulis dalam C dan didistribusikan di bawah lisensi MIT. Versi mesin juga tersedia, dikompilasi ke WebAssembly menggunakan Emscripten dan cocok untuk dieksekusi di browser.

Implementasi JavaScript mendukung Spesifikasi ES2019, termasuk modul, generator asinkron, dan proxy. Matematika non-standar didukung secara opsional ekspansi untuk JavaScript, seperti tipe BigInt dan BigFloat, serta kelebihan beban operator. Kinerja QuickJS sangat signifikan lebih unggul dari analog yang tersedia, misalnya, dalam pengujian
bench-v8 berada di depan mesin XS sebesar 35%, DukTape lebih dari dua kali lipat jerryscript tiga kali dan MuJS tujuh kali.

Selain perpustakaan untuk menyematkan mesin ke dalam aplikasi, proyek ini juga menawarkan juru bahasa qjs, yang dapat digunakan untuk menjalankan kode JavaScript dari baris perintah. Selain itu, kompiler qjsc tersedia, mampu menghasilkan file keluaran yang dapat dieksekusi yang cocok untuk eksekusi mandiri yang tidak memerlukan ketergantungan eksternal.

Fitur utama:

  • Ringkas dan mudah diintegrasikan ke dalam proyek lain. Kode ini hanya mencakup beberapa file C yang tidak memerlukan ketergantungan eksternal untuk perakitan. Aplikasi terkompilasi yang paling sederhana membutuhkan sekitar 190 KB;
  • Performa sangat tinggi dan waktu startup singkat. Melewati 56 ribu tes kompatibilitas ECMAScript membutuhkan waktu sekitar 100 detik bila dijalankan pada satu inti PC desktop biasa. Inisialisasi runtime membutuhkan waktu kurang dari 300 mikrodetik;
  • Dukungan hampir penuh untuk spesifikasi ES2019 dan dukungan penuh untuk Lampiran B, yang mendefinisikan komponen untuk kompatibilitas dengan aplikasi web lama;
  • Menyelesaikan kelulusan semua tes dari ECMAScript Test Suite;
  • Dukungan untuk mengkompilasi kode Javascript ke dalam file yang dapat dieksekusi tanpa ketergantungan eksternal;
  • Pengumpul sampah berdasarkan penghitungan referensi tanpa pembersihan siklik, yang memungkinkan kami mencapai perilaku yang dapat diprediksi dan mengurangi konsumsi memori;
  • Satu set ekstensi untuk perhitungan matematis dalam JavaScript;
  • Shell untuk mengeksekusi kode dalam mode baris perintah, mendukung penyorotan kode kontekstual;
  • Pustaka standar ringkas dengan pembungkus di atas pustaka C.

Proyek ini juga mengembangkan tiga perpustakaan C yang disertakan dalam QuickJS dan cocok untuk penggunaan individu:

  • liregexp - implementasi ekspresi reguler yang cepat, sepenuhnya kompatibel dengan spesifikasi Javascript ES 2019;
  • libunicode - perpustakaan ringkas untuk bekerja dengan Unicode;
  • libbf - Implementasi operasi floating point presisi sewenang-wenang dan fungsi transendental dengan pembulatan tepat.

Sumber: opennet.ru

Tambah komentar