QEMU və FFmpeg-in təsisçisi Micro QuickJS JavaScript mühərrikini dərc etdi

Fransız riyaziyyatçı Fabrice Bellard, zamanında QEMU, FFmpeg, BPG, QuickJS, TinyGL və TinyCC layihələrini qurmuş, yeni JavaScript mühərrikini təqdim etdi - Micro QuickJS, yalnız 10 KB RAM istehlakı ilə JavaScript proqramlarını kompilyasiya və icra edə bilən bir mühərrikdir. C kitabxanası ilə birlikdə mühərrikin sizin üçün təxminən 100 KB daimi yaddaş tələb olunur. JavaScript-in bytecode-a kompilyasiyası və ayrıca bytecode-un icrası mümkündür. Layihənin kodu C dilində yazılıb və MIT lisenziyası altında yayımlanır.

Mühərrik JavaScript dilinin ECMAScript 5 (ES2019) spesifikasiyasına yaxın alt dəstəyini dəstəkləyir, lakin koda daha sərt tələblər qoyur və bəzi qeyri-effektiv və ya xətalara səbəb olan JavaScript quruluşlarının istifadəsini qadağan edir. Məsələn, qlobal dəyişənlər mütləq «var» açar sözü ilə elan edilməlidir, «with» istifadəsi qadağandır, massivlər boş ola bilməz, «new Number(1)» tipində elan edərkən ilkinləşdirmə mümkün deyil, eval-dan lokal dəyişənlərə giriş tamamilə mümkün deyil.

Micro QuickJS-in performansı Fabrice tərəfindən 2019-cu ildən inkişaf etdirilən QuickJS mühərrikinə yaxındır. Micro QuickJS-dən QuickJS mühərrikindən bəzi kod blokları istifadə olunur, lakin arxitektura çox fərqlidir və minimal yaddaş istehlakı üçün layihələndirilmişdir. Məsələn, Micro QuickJS-də iz izləyən zibillik toplayıcı istifadə olunur, QuickJS-də isə referans sayma variantı var. Zibillik toplayıcısının xərcləri hər ayrılmış yaddaş bloku üçün yalnız bir neçə bit təşkil edir. Yaddaşın ayrılması üçün malloc() kitabxana funksiyasından asılı olmayan öz alokatorundan istifadə olunur.

QuickJS-dən digər fərqliliklər: yığın istifadə etməməsi virtual maşın; obyektlərin daxili nümayəndəliyi fərqlidir; simvolların UTF-8 kodlamasında saxlanılması; standart kitabxananın kompilasiya zamanı yaradılması və onun daimi yaddaşda saxlanılması ilə yaddaşda yalnız bir neçə obyekt yaradılması; QuickJS-ə yaxındır, amma rekursiyanı istifadə etməyən bir parser; bytecode istehsalı və optimallaşdırmanın bir mərhələdə birləşdirilməsi (QuickJS-də optimallaşdırma üçün bir neçə mərhələ var).

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster