مؤسس QEMU و FFmpeg ينشران محرك جافا سكريبت QuickJS

عالم الرياضيات الفرنسي فابريس بيلارد، الذي أسس مشروعي QEMU وFFmpeg، ابتكر أيضًا أسرع صيغة لحساب Pi وطور تنسيق الصورة مجلس أصحاب العلامات التجارية، نشر الإصدار الأول من محرك JavaScript الجديد QuickJS. المحرك مدمج ومصمم للتكامل في الأنظمة الأخرى. كود المشروع مكتوب بلغة C ويتم توزيعه بموجب ترخيص MIT. يتوفر أيضًا إصدار المحرك، وقد تم تجميعه في WebAssembly باستخدام Emscripten ومناسب للتنفيذ في المتصفحات.

تنفيذ جافا سكريبت يدعم مواصفات ES2019، بما في ذلك الوحدات والمولدات غير المتزامنة والوكلاء. يتم دعم الرياضيات غير القياسية بشكل اختياري توسع لـ JavaScript، مثل أنواع BigInt وBigFloat، بالإضافة إلى التحميل الزائد للمشغل. أداء QuickJS مهم متفوقة على نظائرها المتاحة، على سبيل المثال، في الاختبار
مقاعد البدلاء V8 أمام المحرك XS بنسبة 35٪ ، دوكتاب أكثر من مرتين جيري سكريبت ثلاث مرات و MuJS سبع مرات.

بالإضافة إلى مكتبة تضمين المحرك في التطبيقات، يقدم المشروع أيضًا مترجم qjs، والذي يمكن استخدامه لتشغيل كود JavaScript من سطر الأوامر. علاوة على ذلك، يتوفر مترجم qjsc، وهو قادر على إنشاء ملفات إخراج قابلة للتنفيذ مناسبة للتنفيذ المستقل الذي لا يتطلب تبعيات خارجية.

السمات الرئيسية:

  • مدمجة وسهلة الاندماج في مشاريع أخرى. يتضمن الكود عددًا قليلاً فقط من ملفات C التي لا تتطلب تبعيات خارجية للتجميع. أبسط تطبيق تم تجميعه يستغرق حوالي 190 كيلو بايت؛
  • أداء عالي جدًا ووقت بدء تشغيل قصير. يستغرق اجتياز 56 ألف اختبار توافق ECMAScript حوالي 100 ثانية عند تنفيذها على نواة واحدة لجهاز كمبيوتر مكتبي عادي. تستغرق تهيئة وقت التشغيل أقل من 300 ميكروثانية؛
  • الدعم الكامل تقريبًا لمواصفات ES2019 والدعم الكامل للملحق ب، الذي يحدد المكونات اللازمة للتوافق مع تطبيقات الويب القديمة؛
  • اجتياز جميع الاختبارات من مجموعة اختبار ECMAScript؛
  • دعم تجميع كود Javascript في ملفات قابلة للتنفيذ دون تبعيات خارجية؛
  • جامع البيانات المهملة يعتمد على العد المرجعي دون التنظيف الدوري، مما سمح لنا بتحقيق سلوك يمكن التنبؤ به وتقليل استهلاك الذاكرة؛
  • مجموعة من الامتدادات للحسابات الرياضية في JavaScript؛
  • غلاف لتنفيذ التعليمات البرمجية في وضع سطر الأوامر، ودعم تمييز التعليمات البرمجية السياقية؛
  • مكتبة قياسية مدمجة مع أغلفة فوق مكتبة C.

يقوم المشروع أيضًا بتطوير ثلاث مكتبات C مصاحبة تشارك في QuickJS ومناسبة للاستخدام الفردي:

  • libregexp - تنفيذ سريع للتعبيرات العادية، متوافق تمامًا مع مواصفات Javascript ES 2019؛
  • libunicode - مكتبة مدمجة للعمل مع Unicode؛
  • libbf - تنفيذ عمليات الفاصلة العائمة الدقيقة والوظائف المتعالية مع التقريب الدقيق.

المصدر: opennet.ru

إضافة تعليق