QEMU ve FFmpeg'in kurucusu QuickJS JavaScript motorunu yayınladı

QEMU ve FFmpeg projelerini kuran Fransız matematikçi Fabrice Bellard da Pi sayısını hesaplamak için en hızlı formülü oluşturdu ve görüntü formatını geliştirdi. BPG, yeni JavaScript motorunun ilk sürümünü yayınladı QuickJS. Motor kompakttır ve diğer sistemlere entegrasyon için tasarlanmıştır. Proje kodu C dilinde yazılmıştır ve MIT lisansı altında dağıtılmaktadır. Motorun Emscripten kullanılarak WebAssembly'de derlenmiş ve tarayıcılarda çalıştırılmaya uygun bir yapısı da mevcuttur.

JavaScript Uygulaması поддерживает Modüller, asenkron oluşturucular ve proxy'ler dahil ES2019 spesifikasyonu. Standart dışı matematik isteğe bağlı olarak desteklenir genişleme BigInt ve BigFloat türleri gibi JavaScript'in yanı sıra operatör aşırı yüklemesi. QuickJS'in performansı önemli aşan mevcut analoglar, örneğin testte
bench-v8 motorun önünde XS % 35, DukTape iki katından fazla jerryscript üç kez ve MuJS Yedi kez

Proje, motoru uygulamalara yerleştirmeye yönelik kitaplığın yanı sıra, komut satırından JavaScript kodunu çalıştırmak için kullanılabilecek bir qjs yorumlayıcısı da sunuyor. Ayrıca, harici bağımlılıklar gerektirmeyen, bağımsız yürütmeye uygun yürütülebilir çıktı dosyaları oluşturabilen qjsc derleyicisi de mevcuttur.

Ana Özellikler:

  • Kompakt ve diğer projelere entegrasyonu kolaydır. Kod, derleme için harici bağımlılık gerektirmeyen yalnızca birkaç C dosyası içerir. En basit derlenmiş uygulama yaklaşık 190 KB yer kaplar;
  • Çok yüksek performans ve kısa başlatma süresi. 56 bin ECMAScript uyumluluk testini geçmek, normal bir masaüstü bilgisayarın tek çekirdeğinde yürütüldüğünde yaklaşık 100 saniye sürüyor. Çalışma zamanının başlatılması 300 mikrosaniyeden az sürer;
  • ES2019 spesifikasyonu için neredeyse tam destek ve eski web uygulamalarıyla uyumluluk için bileşenleri tanımlayan Ek B için tam destek;
  • ECMAScript Test Suite'ten tüm testlerin tam olarak geçmesi;
  • Javascript kodunu harici bağımlılıklar olmadan yürütülebilir dosyalar halinde derleme desteği;
  • Öngörülebilir davranışlar elde etmemizi ve bellek tüketimini azaltmamızı sağlayan, döngüsel temizleme olmadan referans sayımına dayalı bir çöp toplayıcı;
  • JavaScript'te matematiksel hesaplamalar için bir dizi uzantı;
  • Bağlamsal kod vurgulamayı destekleyen, komut satırı modunda kod yürütmek için bir kabuk;
  • C kütüphanesinin üzerinde sarmalayıcılar bulunan kompakt standart kütüphane.

Proje ayrıca QuickJS'de yer alan ve bireysel kullanıma uygun üç C kütüphanesi geliştiriyor:

  • libregexp - Javascript ES 2019 spesifikasyonuyla tamamen uyumlu, normal ifadelerin hızlı uygulanması;
  • libunicode - Unicode ile çalışmak için kompakt bir kütüphane;
  • libbf - Rastgele hassas kayan nokta işlemlerinin ve aşkın fonksiyonların tam yuvarlamayla uygulanması.

Kaynak: opennet.ru

Yorum ekle