محرك V8 (محرك جافا سكريبت)
محرك V8 هو محرك جافا سكريبت و WebAssembly طورته جوجل لمتصفحها كروم . [ 1 ] [ 4 ] يُعد V8 برنامجًا مجانيًا ومفتوح المصدر (FOSS) وجزءًا من مشروع كروميوم . كما يُستخدم في سياقات غير المتصفحات، ولا سيما في نظام تشغيل Node.js. [ 1 ] تستخدم بيئات تشغيل جافا سكريبت الأخرى من جانب الخادم محركات بديلة، مثل Bun (الذي يستخدم JavaScriptCore ) وHermes (المستخدم في React Native ).
تاريخ
طوّرت جوجل محرك V8 لمتصفحها كروم، لذا تزامن إطلاق V8 الأول مع إطلاق كروم الأول عام 2008. [ 4 ] سُمّي المحرك تيمنًا بمحرك V8 ، وكان لارس باك مطوّره الرئيسي . [ 5 ] لسنوات عديدة، كان كروم أسرع من المتصفحات الأخرى في تنفيذ جافا سكريبت. [ 6 ] [ 7 ] [ 8 ]
يعتمد مُجمِّع V8 على مُجمِّع Strongtalk . [ 9 ] في 7 ديسمبر 2010، تم إصدار بنية تجميع جديدة باسم Crankshaft، مع تحسينات في السرعة. [ 10 ] في الإصدار 41 من متصفح Chrome عام 2015، أُضيف مشروع TurboFan لتحسين الأداء بشكل أكبر مع أحمال العمل التي كانت تُمثل تحديًا سابقًا، مثل asm.js. [ 11 ] استُلهم جزء كبير من تطوير V8 من آلة Java HotSpot الافتراضية التي طورتها شركة Sun Microsystems ، حيث تُشابه مسارات التنفيذ الأحدث تلك الموجودة في HotSpot إلى حد كبير.
بدأ دعم لغة WebAssembly في عام 2015. [ 12 ]
في عام 2016، أُضيف مُفسِّر Ignition إلى V8 بهدف تقليل استهلاك الذاكرة على هواتف أندرويد ذات الذاكرة المحدودة ، مقارنةً بـ TurboFan و Crankshaft. [ 13 ] يعتمد Ignition على السجلات ، ويشترك في تصميم مشابه (وإن لم يكن مطابقًا تمامًا) مع مُفسِّر القوالب المستخدم في HotSpot.
في عام 2017، أطلقت V8 خط أنابيب ترجمة جديدًا كليًا ، يتألف من Ignition ( المفسر ) وTurboFan ( المترجم المُحسِّن ). بدءًا من الإصدار 5.9 من V8، لم يعد يُستخدم كل من Full-codegen (المترجم الأساسي الأولي) وCrankshaft في V8 لتنفيذ جافا سكريبت، نظرًا لاعتقاد الفريق بأنهما لم يعودا قادرين على مواكبة ميزات لغة جافا سكريبت الجديدة والتحسينات التي تتطلبها هذه الميزات. [ 14 ]
في عام 2021، تم تقديم خط أنابيب تجميع متعدد المستويات جديد مع إصدار مُجمِّع SparkPlug، والذي يُكمِّل مُجمِّع TurboFan الحالي داخل V8، بشكل موازٍ مباشر لمُجمِّع C1 المستخدم في HotSpot.
في عام 2023، أُضيف مُصرّف Maglev SSA ، وهو أبطأ بعشر مرات من Sparkplug ولكنه أسرع بعشر مرات من TurboFan، مما يسد الفجوة بين Sparkplug وTurboFan بالنسبة للحلقات التي تُنفّذ بشكل أقل تكرارًا والتي لا تصل إلى درجة "حرارة" كافية ليتم تحسينها بواسطة TurboFan، كما هو الحال بالنسبة لمعظم تطبيقات الويب التي تقضي وقتًا أطول في التفاعل مع المتصفح مقارنةً بتنفيذ JavaScript. [ 15 ]
تصميم
يقوم محرك V8 أولاً بإنشاء شجرة بناء جملة مجردة باستخدام محلله الخاص. [ 16 ] ثم يقوم برنامج Ignition بإنشاء رمز بايت من شجرة بناء الجملة هذه باستخدام تنسيق رمز بايت V8 الداخلي . [ 17 ] يقوم برنامج TurboFan بتجميع رمز البايت هذا إلى رمز الآلة. بعبارة أخرى، يقوم V8 بتجميع ECMAScript مباشرةً إلى رمز الآلة الأصلي باستخدام التجميع الفوري قبل تنفيذه. [ 18 ] يتم تحسين الكود المُجمَّع (وإعادة تحسينه) ديناميكيًا أثناء التشغيل، بناءً على قواعد استدلالية لملف تعريف تنفيذ الكود. تشمل تقنيات التحسين المستخدمة التضمين ، وحذف خصائص وقت التشغيل المكلفة، والتخزين المؤقت المضمن . جامع البيانات المهملة هو جامع تزايدي جيلي . [ 19 ]
الاستخدام
يمكن ترجمة لغة V8 إلى معمارية x86 أو ARM أو MIPS بنسختيها 32 بت و 64 بت ؛ كما تم نقلها إلى PowerPC ، [ 20 ] [ 21 ] وإلى IBM ESA/390 و z/Architecture ، [ 22 ] [ 20 ] لاستخدامها في الخوادم. [ 23 ]
يمكن استخدام محرك V8 في متصفح الإنترنت أو دمجه في مشاريع مستقلة. يُستخدم محرك V8 في البرامج التالية:
- متصفحات الويب المبنية على Chromium - جوجل كروم ، بريف ، أوبرا ، فيفالدي ومايكروسوفت إيدج .
- البيئات القائمة على السحابة، مثل Google Apps Script [ 24 ]
- خادم قاعدة بيانات Couchbase
- بيئة تشغيل دينو [ 25 ]
- إطار عمل تطبيقات سطح المكتب Electron ، المستخدم من قبل تطبيقات مثل محرر النصوص Visual Studio Code و Discord
- خادم قاعدة بيانات MarkLogic
- إطار عمل تطبيقات الهاتف المحمول NativeScript [ 26 ]
- بيئة تشغيل Node.js [ 27 ]
انظر أيضاً
- بلينك ، محرك متصفح كروميوم
- قائمة محركات جافا سكريبت
مراجع
- 1 2 3 4 "الوثائق · V8" . جوجل . تم الاسترجاع في 3 مارس 2024 .
- ↑ "حالة منصة كروم" . تم الاطلاع عليه بتاريخ 29 يونيو 2023 .
- ↑ "v8/LICENSE.v8 at master" . Github.
- لينسن ، فيليب ( 1 سبتمبر 2008). "جوجل على جوجل كروم - كتاب هزلي" . مدونة جوجل . تم الاطلاع عليه بتاريخ 17 أغسطس 2010 .
- ↑ "V8: محرك جافا سكريبت مفتوح المصدر" . يوتيوب . جوجل. 15 سبتمبر 2008. تم الاطلاع عليه في 15 مارس 2024 .
- ↑ "اختبار مقارنة شامل للمتصفحات: إنترنت إكسبلورر مقابل فايرفوكس، أوبرا، سفاري، وكروم" . مجلة ألعاب الكمبيوتر والأجهزة . شركة كومبيوتك ميديا إيه جي. 3 يوليو 2009. مؤرشف من الأصل في 2 مايو 2012. تم الاطلاع عليه في 28 يونيو 2010 .
- ↑ بوردي، كيفن (11 يونيو 2009). "اختبارات سرعة لايف هاكر: سفاري 4، كروم 2" . لايف هاكر . مؤرشف من الأصل في 14 أبريل 2021. تم الاطلاع عليه في 8 مايو 2021 .
- ↑ "تسأل موزيلا: 'هل أصبحنا سريعين بعد؟'"" . Wired . مؤرشف من الأصل في 22 يونيو 2018. تم الاسترجاع في 18 يناير 2019 .
- ↑ "محرك جافا سكريبت V8: الترخيص" . كود جوجل . مؤرشف من الأصل في 22 يوليو 2010. تم الاطلاع عليه في 17 أغسطس 2010 .
- ↑ "عمود مرفقي جديد لمحرك V8" . مدونة كروميوم . 7 ديسمبر 2010. تم الاطلاع عليه بتاريخ 22 أبريل 2011 .
- ↑ "تحسين أداء جافا سكريبت باستخدام TurboFan" . 7 يوليو 2015. تم الاطلاع عليه في 5 مارس 2016 .
- ↑ "دعم تجريبي لـ WebAssembly في V8" . v8.dev . تم الاطلاع عليه بتاريخ 12 مارس 2024 .
- ↑ "BlinkOn 6 اليوم الأول، المحاضرة الثانية: Ignition - مترجم لـ V8" . يوتيوب . 26 يونيو 2016. مؤرشف من الأصل في 21 ديسمبر 2021. تم الاطلاع عليه في 2 سبتمبر 2016 .
- ↑ "إطلاق نظامي الإشعال والتوربو فان" . 16 مايو 2017. تم الاطلاع عليه بتاريخ 13 يوليو 2017 .
- ↑ "Maglev - أسرع تقنية JIT مُحسِّنة لمحرك V8" . 5 ديسمبر 2023. تم الاطلاع عليه بتاريخ 26 يناير 2024 .
- ↑ فيرواست، تون (25 مارس 2019). "تحليل سريع للغاية، الجزء 1: تحسين الماسح الضوئي · V8" . v8.dev . مؤرشف من الأصل في 21 أبريل 2021. تم الاطلاع عليه في 1 يونيو 2021 .
- ↑ هينكلمان، فرانزيسكا (19 ديسمبر 2017). "فهم بايت كود V8" . ميديوم . تم الاطلاع عليه بتاريخ 17 أكتوبر 2019 .
- ↑ "تشغيل مترجم Ignition · V8" . v8.dev . تم الاطلاع عليه بتاريخ 30 سبتمبر 2020 .
- ↑ "نقلة نوعية في الأداء التفاعلي" . blog.chromium.org . 21 نوفمبر 2011. تم الاطلاع عليه بتاريخ 6 فبراير 2022 .
- 1 2 "دعم محركات جوجل V8 للإعلانات المدفوعة لكل نقرة يصبح شائعًا" . 30 يونيو 2015. مؤرشف من الأصل في 12 سبتمبر 2015.
- ↑ "GitHub - ibmruntimes/v8ppc: نقل محرك جافا سكريبت V8 من جوجل إلى PowerPC®" . 21 أبريل 2019 – عبر GitHub.
- ↑ "نقل محرك جافا سكريبت V8 من جوجل إلى نظام التشغيل z/OS. تتم صيانة نسخة لينكس على نظام z في المجتمع: ibmruntimes/v8z" . 2 أبريل 2019 - عبر GitHub.
- ↑ "سجل تغييرات الإصدار 3.8.2 من V8" . مؤرشف من الأصل بتاريخ 22 أكتوبر 2012. تم الاطلاع عليه بتاريخ 23 أكتوبر 2012 .
- ↑ "نظرة عامة على بيئة تشغيل V8 | تطبيقات سكريبت" . جوجل للمطورين . تم الاطلاع عليه بتاريخ 26 يناير 2025 .
- ↑ "بيئة تشغيل آمنة للغة جافا سكريبت/تايب سكريبت مبنية باستخدام V8 و Rust و Tokio: denoland/deno" . 8 يوليو 2019 - عبر GitHub.
- ↑ "نظرة عامة - وثائق NativeScript" . docs.nativescript.org . مؤرشف من الأصل بتاريخ 28 يوليو 2020. تم الاطلاع عليه بتاريخ 8 يوليو 2019 .
- ↑ جولي أوديل (10 مارس 2011). "لماذا يتحدث الجميع عن Node؟" . ماشابل.
روابط خارجية
- برنامج 2008
- مترجمون فوريون مجانيون ومفتوحو المصدر
- جوجل كروم
- برنامج جوجل
- محركات جافا سكريبت
- البرامج التي تستخدم ترخيص BSD
- الآلات الافتراضية
