Ana Sayfa

Micro QuickJS: Gömülü Sistemler İçin Hafif JavaScript Motoru

1 dk okuma

MicroQuickJS (MQuickJS), özellikle gömülü sistemler için tasarlanmış, oldukça hafif bir JavaScript motorudur. Sadece 10 kB RAM ile JavaScript programlarını derleyip çalıştırabilen bu motor, C kütüphanesi dahil olmak üzere yaklaşık 100 kB ROM (ARM Thumb-2 kodu) alanı kaplar. Performans açısından QuickJS ile kıyaslanabilir bir hız sunar. MQuickJS, bellek tüketimini minimize etmek amacıyla QuickJS ile birçok kodu paylaşsa da, dahili yapısı farklıdır. Örneğin, izleme tabanlı bir çöp toplayıcı (tracing garbage collector) kullanır, sanal makine (VM) CPU yığınını kullanmaz ve dizeler (strings) UTF-8 formatında saklanır.

MQuickJS, JavaScript'in ES5'e yakın bir alt kümesini destekler ve bazı hata eğilimli veya verimsiz yapıları yasaklayan daha katı bir modda çalışır. Bu katı mod, with anahtar kelimesini, bildirilmemiş global değişkenleri ve dizi boşluklarını (array holes) engeller. Örneğin, a[10] = 2 gibi bir atama ile dizinin sonundan sonra eleman eklenmesine izin verilmez; bunun yerine normal nesneler kullanılmalıdır. Ayrıca, yalnızca global eval desteklenir ve new Number(1) gibi değer kutulama (value boxing) işlemleri gerekli değildir. Bu kısıtlamalar, kodun daha güvenli ve verimli olmasını sağlarken, diğer JavaScript motorlarında da uyumlu kalmasını amaçlar.

Motor, REPL (Read-Eval-Print Loop) arayüzü mqjs üzerinden kullanılabilir ve programları doğrudan çalıştırmanın yanı sıra derlenmiş bayt kodunu dosya veya ROM'a kaydetme yeteneğine sahiptir. Bu özellik, programların bir kez derlenip daha sonra hızlıca çalıştırılmasını sağlar. Ayrıca, 32 bit gömülü sistemler için 64 bit CPU'larda 32 bit bayt kodu üretme seçeneği de mevcuttur. Hata ayıklama bilgilerindeki sütun numaralarını kaldırarak depolama alanından tasarruf etmek de mümkündür, bu da gömülü sistemlerin kısıtlı kaynakları için önemli bir avantajdır.

İçgörü

Bu motor, kısıtlı kaynaklara sahip gömülü sistemlerde JavaScript tabanlı uygulamalar geliştirmek için yeni ve verimli bir yol sunarak IoT ve mikrodenetleyici projelerinin potansiyelini genişletiyor.

Kaynak