Pengasas QEMU dan FFmpeg Menerbitkan Enjin JavaScript QuickJS

Ahli matematik Perancis Fabrice Bellard, yang mengasaskan projek QEMU dan FFmpeg, juga mencipta formula terpantas untuk mengira Pi dan membangunkan format imej BPG, menerbitkan keluaran pertama enjin JavaScript baharu QuickJS. Enjinnya padat dan direka bentuk untuk penyepaduan ke dalam sistem lain. Kod projek ditulis dalam C dan diedarkan di bawah lesen MIT. Binaan enjin juga tersedia, disusun ke dalam WebAssembly menggunakan Emscripten dan sesuai untuk pelaksanaan dalam pelayar.

Pelaksanaan JavaScript menyokong Spesifikasi ES2019, termasuk modul, penjana tak segerak dan proksi. Matematik bukan standard disokong secara pilihan pengembangan untuk JavaScript, seperti jenis BigInt dan BigFloat, serta operator lebih muatan. Prestasi QuickJS adalah penting unggul kepada analog yang tersedia, sebagai contoh, dalam ujian
bench-v8 berada di hadapan enjin XS sebanyak 35%, DukTape lebih daripada dua kali ganda jerryscript tiga kali dan MuJS tujuh kali.

Selain perpustakaan untuk membenamkan enjin ke dalam aplikasi, projek ini juga menawarkan penterjemah qjs, yang boleh digunakan untuk menjalankan kod JavaScript daripada baris arahan. Selain itu, pengkompil qjsc tersedia, mampu menghasilkan fail boleh laku output yang sesuai untuk pelaksanaan bersendirian yang tidak memerlukan kebergantungan luaran.

Ciri-ciri utama:

  • Padat dan mudah untuk disepadukan ke dalam projek lain. Kod ini termasuk hanya beberapa fail C yang tidak memerlukan kebergantungan luaran untuk pemasangan. Aplikasi tersusun paling mudah mengambil masa kira-kira 190 KB;
  • Prestasi yang sangat tinggi dan masa permulaan yang singkat. Melepasi 56 ribu ujian keserasian ECMAScript mengambil masa kira-kira 100 saat apabila dilaksanakan pada teras tunggal PC desktop biasa. Permulaan masa jalan mengambil masa kurang daripada 300 mikrosaat;
  • Sokongan hampir penuh untuk spesifikasi ES2019 dan sokongan penuh untuk Lampiran B, yang mentakrifkan komponen untuk keserasian dengan aplikasi web lama;
  • Lulus lengkap semua ujian daripada Suite Ujian ECMAScript;
  • Sokongan untuk menyusun kod Javascript ke dalam fail boleh laku tanpa kebergantungan luaran;
  • Pengumpul sampah berdasarkan pengiraan rujukan tanpa pembersihan kitaran, yang membolehkan kami mencapai tingkah laku yang boleh diramal dan mengurangkan penggunaan ingatan;
  • Satu set sambungan untuk pengiraan matematik dalam JavaScript;
  • Cangkang untuk melaksanakan kod dalam mod baris arahan, menyokong penonjolan kod kontekstual;
  • Pustaka standard padat dengan pembungkus di atas pustaka C.

Projek ini juga sedang membangunkan tiga perpustakaan C yang disertakan dalam QuickJS dan sesuai untuk kegunaan individu:

  • libregexp - pelaksanaan pantas ungkapan biasa, serasi sepenuhnya dengan spesifikasi Javascript ES 2019;
  • libunicode - perpustakaan padat untuk bekerja dengan Unicode;
  • libbf - Pelaksanaan operasi titik terapung ketepatan arbitrari dan fungsi transendental dengan pembundaran tepat.

Sumber: opennet.ru

Tambah komen