الفيسبوك مفتوح المصدر هيرميس محرك جافا سكريبت

محرك جافا سكريبت مفتوح المصدر وخفيف الوزن من فيسبوك هيرميس، الأمثل لتشغيل التطبيقات على أساس الإطار تتفاعل الأصلية على منصة أندرويد. دعم هيرميس مدمج في React Native بدءًا من إصدار اليوم 0.60.2. تم تصميم المشروع لحل المشكلات المتعلقة بأوقات بدء التشغيل الطويلة لتطبيقات JavaScript الأصلية والاستهلاك الكبير للموارد. شفرة مكتوب في C++ ويتم توزيعها بموجب ترخيص MIT.

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

لتنفيذ التطبيق مباشرة، يتم استخدام جهاز افتراضي تم تطويره ضمن المشروع مع أداة تجميع البيانات المهملة SemiSpace، والتي تقوم بتوزيع الكتل حسب الحاجة فقط (حسب الطلب)، وتدعم نقل الكتل وإلغاء تجزئتها، وإعادة الذاكرة المحررة إلى نظام التشغيل، دون الحاجة إلى ذلك بشكل دوري مسح محتويات الكومة بأكملها.

تنقسم معالجة JavaScript إلى عدة مراحل. أولاً، يتم تحليل النصوص المصدرية ويتم إنشاء تمثيل وسيط للكود (هيرميس آي آر)، على أساس التمثيل SSA (مهمة فردية ثابتة). بعد ذلك، تتم معالجة التمثيل الوسيط في مُحسِّن، والذي يطبق تقنيات التحسين الثابتة الأمامية لتحويل الكود الوسيط الأساسي إلى تمثيل وسيط أكثر كفاءة مع الحفاظ على الدلالات الأصلية للبرنامج. في المرحلة الأخيرة، يتم إنشاء الرمز الثانوي للجهاز الظاهري المسجل.

في المحرك مدعوم من جزء من معيار ECMAScript 2015 JavaScript (الهدف النهائي هو دعمه بالكامل) ويوفر التوافق مع معظم تطبيقات React Native الموجودة. قررت Hermes عدم دعم التنفيذ المحلي لـ eval()، مع البيانات والانعكاس (Reflect and Proxy) وIntl API وبعض العلامات في RegExp. لتمكين Hermes في تطبيق React Native، ما عليك سوى إضافة خيار "enableHermes: true" إلى المشروع. من الممكن أيضًا إنشاء Hermes في وضع CLI، مما يسمح لك بتنفيذ ملفات JavaScript عشوائية من سطر الأوامر. يتوفر وضع التجميع البطيء لتصحيح الأخطاء، والذي يسمح لك بعدم ترجمة JavaScript في كل مرة أثناء عملية التطوير، ولكن يمكنك إنشاء كود ثانوي سريعًا على الجهاز بالفعل.

في الوقت نفسه، لا يخطط فيسبوك لتكييف Hermes مع Node.js والحلول الأخرى، مع التركيز فقط على تطبيقات الهاتف المحمول (يعتبر تجميع AOT بدلاً من JIT هو الأمثل في سياق أنظمة الهاتف المحمول، التي تحتوي على ذاكرة وصول عشوائي محدودة وفلاش أبطأ). اختبار الأداء الأولي الذي أجراه موظفو Microsoft وأظهرتأنه عند استخدام Hermes، يصبح تطبيق Microsoft Office لنظام Android متاحًا للاستخدام خلال 1.1 ثانية. بعد بدء التشغيل ويستهلك 21.5 ميجابايت من ذاكرة الوصول العشوائي، بينما عند استخدام محرك V8 يستغرق 1.4 ثانية لبدء التشغيل ويبلغ استهلاك الذاكرة 30 ميجابايت.

اضافة : فيس بوك نشرت نتائج الاختبار الخاصة. عند استخدام Hermes مع تطبيق MatterMost، انخفض وقت بدء توفر العمل (TTI، Time To Interact) من 4.30 إلى 2.01 ثانية، كما تم تقليل حجم حزمة APK من 41 إلى 22 ميجابايت، واستهلاك الذاكرة من 185 إلى 136 ميغابايت.

المصدر: opennet.ru

إضافة تعليق