إتش إتش في إم
| المطور(ون) | منصات ميتا |
|---|---|
| الإصدار الأولي | 9 ديسمبر 2011 [1] |
| إصدار مستقر | 3.15.0 [2]
/ 28 سبتمبر 2016 |
| مستودع |
|
| مكتوب في | PHP ، C++ ، [3] OCaml [4] [a] و Rust [5] |
| رخصة | رخصة PHP ورخصة Zend [6] |
| موقع إلكتروني | hhvm.com |
آلة HipHop الافتراضية ( HHVM ) هي آلة افتراضية مفتوحة المصدر تعتمد على التجميع في الوقت المناسب (JIT) وتعمل كمحرك تنفيذ للغة برمجة Hack . باستخدام مبدأ التجميع في الوقت المناسب، يتم تحويل كود Hack أولاً إلى كود ثنائي هيب هوب وسيط ( HHBC )، والذي يتم ترجمته بعد ذلك ديناميكيًا إلى كود آلة x86-64 ، وتحسينه، وتنفيذه بشكل أصلي. [7] [8] يتناقض هذا مع التنفيذ المفسر المعتاد لـ PHP ، حيث يحول محرك Zend كود مصدر PHP إلى أكواد تشغيلية تعمل كشكل من أشكال الكود الثنائي ، وينفذ أكواد التشغيل مباشرة على وحدة المعالجة المركزية الافتراضية لمحرك Zend . [9]
تم تطوير HHVM بواسطة Meta ، مع استضافة الكود المصدر للمشروع على GitHub ؛ [10] وهو مرخص بموجب شروط ترخيص PHP وترخيص Zend . [1] [6]
ملخص
تم إنشاء HHVM كخليفة لمحرك تنفيذ PHP HipHop for PHP (HPHPc)، وهو عبارة عن مُترجم PHP إلى C++ تم إنشاؤه أيضًا بواسطة Facebook. [11] [12] بناءً على الخبرة المكتسبة وبهدف حل المشكلات التي أدخلها HPHPc، قررت Meta في أوائل عام 2010 إنشاء آلة افتراضية PHP تعتمد على JIT . تضمنت المشكلات المرتبطة بـ HPHPc الوصول إلى هضبة لمزيد من تحسينات الأداء، وعدم القدرة الأساسية على دعم جميع ميزات لغة PHP، والصعوبات الناشئة عن عمليات التطوير والنشر المحددة التي تستغرق وقتًا وموارد. [11] في الربع الأول من عام 2013، توقف الإصدار الإنتاجي من موقع facebook.com عن استخدام HPHPc وتحول إلى HHVM.
باتباع مبدأ التجميع في الوقت المناسب، يحول HHVM أولاً الكود المُنفذ إلى لغة وسيطة ، وهي البايت كود عالي المستوى HHBC. HHBC هو تنسيق بايت كود تم إنشاؤه خصيصًا لـ HHVM، وهو مناسب للاستخدام من قبل كل من المفسرين والمترجمين في الوقت المناسب. بعد ذلك، يترجم HHVM بشكل ديناميكي ("في الوقت المناسب") HHBC إلى كود آلي x86-64، مُحسَّن من خلال التحليل الديناميكي للبايت كود المُترجم. أخيرًا، ينفذ كود آلي x86-64. [1] [11] [13] ونتيجة لذلك، فإن HHVM لديها بعض أوجه التشابه مع الآلات الافتراضية المستخدمة من قبل لغات البرمجة الأخرى، بما في ذلك وقت تشغيل اللغة المشتركة (CLR، للغة C# ) وآلة Java الافتراضية (JVM، للغة Java ).
يقدم HHVM العديد من الفوائد بالمقارنة مع HPHPc. يستخدم HHVM نفس محرك التنفيذ عند نشره في كل من بيئات الإنتاج والتطوير، مع دعم التكامل بين محرك التنفيذ ومصحح أخطاء HPHPd في كلا نوعي البيئة؛ ونتيجة لذلك، لم تعد هناك حاجة إلى الحفاظ على HPHPi (مترجم HipHop) بشكل منفصل كأداة مساعدة للتطوير كما كانت الحال مع HPHPc. كما يلغي HHVM عمليات البناء الطويلة المطلوبة من HPHPc لتشغيل البرامج، مما يؤدي إلى عمليات تطوير ونشر أبسط بكثير مما كانت عليه الحال مع HPHPc. [1] أخيرًا، تحتوي إصدارات HHVM قبل 4.0 على دعم شبه كامل للغة PHP بالكامل (كما هو محدد بواسطة التنفيذ الرسمي لإصدار PHP 5.4)، بما في ذلك دعم الإنشاءات و ، وهو ما كان مستحيلًا مع HPHPc. [14] [15]create_function()eval()
جنبًا إلى جنب مع HHVM 3.0، [16] أصدرت Meta أيضًا Hack ، وهو مشتق من PHP [17] [18] يسمح للمبرمجين باستخدام كل من الكتابة الديناميكية والكتابة الثابتة (مفهوم يُعرف أيضًا بالكتابة التدريجية )، ويسمح بتحديد الأنواع لحجج الوظيفة وقيم إرجاع الوظيفة وخصائص الفئة . ومع ذلك، لا يوفر Hack توافقًا عكسيًا كاملاً لأنه يزيل العديد من ميزات PHP، مثل العبارة وأسماء المتغيرات الديناميكية . [19] [20] [21] [22]goto
في سبتمبر 2017، أُعلن أن الإصدار 3.30 سيكون الإصدار الأخير من HHVM الذي يدعم PHP رسميًا، وأن HHVM سيدعم Hack فقط في المستقبل. [23] وكان هذا بسبب الاختلافات وعدم التوافق في PHP 7. [24] كان HHVM 4.0، الذي تم إصداره في فبراير 2019، هو الإصدار الأول بدون دعم PHP. [25]
أداء
باعتبارها آلة افتراضية للعمليات توفر بيئة التنفيذ، تتمتع HHVM بالقدرة على استخدام معلومات النوع المباشر لإنتاج كود أصلي أكثر كفاءة، مما يؤدي إلى إنتاجية أعلى لخادم الويب ووقت استجابة أقل . في الربع الرابع من عام 2012، حقق تنفيذ الكود المصدر لـ facebook.com على HHVM تكافؤ الأداء مع HPHPc، [11] وفي ديسمبر 2013 تم تجاوز HPHPc بنحو 15٪. [26]
انظر أيضا
ملحوظات
- ^ فقط أدوات سطر الأوامر الخاصة بفحص النوع ( hh_server و hh_client ) وتنسيق الكود ( hh_format ) والبرامج المساعدة المرفقة مع HipHop Virtual Machine مكتوبة بلغة OCaml .
مراجع
- ^ abcd Jason Evans (9 ديسمبر 2011). "The HipHop Virtual Machine". Meta Platforms . تم الاسترجاع في 2 أغسطس 2014 .
- ^ "الإصدار 3.15.0". 28 سبتمبر 2016. تم الاسترجاع في 13 مارس 2018 .
- ^ "إنشاء وتثبيت HHVM على CentOS 7.x". github.com . Meta Platforms . 26 مايو 2015 . تم الاسترجاع في 12 يونيو 2015 .
- ^ "Building the Hack typechecker". github.com . Meta. 10 سبتمبر 2014 . تم الاسترجاع في 12 يونيو 2015 .
- ^ "بدأت HHVM التابعة لفيسبوك في رؤية إعادة كتابة Rust - Phoronix" . تم الاسترجاع في 29 أغسطس 2019 .
- ^ ab "facebook/hhvm: License". github.com . Facebook, Inc. تم الاسترجاع في 2 أغسطس 2014 .
- ^ أوتوني، جيلهيرمي (20 يونيو 2018). "HHVM JIT: مُجمِّع موجه بالملفات ومبني على المنطقة لـ PHP وHack". وقائع مؤتمر ACM SIGPLAN التاسع والثلاثين حول تصميم وتنفيذ لغات البرمجة (PLDI) . ACM . ص 151-165.
- ^ "facebook/hhvm". github.com . Meta Platforms . تم الاسترجاع في 2 أغسطس 2014 .
- ^ Kaushik Pal (28 أبريل 2014). "PHP and Zend Engine Internals". phpbuilder.com . مؤرشف من الأصل في 15 سبتمبر 2014 . تم الاسترجاع في 23 سبتمبر 2014 .
- ^ كود مصدر HHVM على GitHub
- ^ abcd Drew Paroski (29 نوفمبر 2012). "تسريع التطوير القائم على PHP باستخدام HHVM". Meta Platforms . تم الاسترجاع في 2 أغسطس 2014 .
- ^ "إعلان عن إزالة دعم HPHPc من GitHub". github.com . Meta Platforms . 19 فبراير 2013 . تم الاسترجاع في 24 مايو 2013 .
- ^ "HipHop Bytecode v1 revision 18". github.com . Meta Platforms . 31 يوليو 2014 . تم الاسترجاع في 24 مايو 2013 .
- ^ "facebook/hhvm: حول الترقية إلى محرك PHP 5.4". github.com . مايو 2013 . تم الاسترجاع في 2 أغسطس 2014 .
- ^ "facebook/hhvm: Home". github.com . Meta Platforms . 8 مايو 2014 . تم الاسترجاع في 2 أغسطس 2014 .
- ^ بول تارجان (28 مارس 2014). "HHVM 3.0.0". فيسبوك . تم الاسترجاع في 26 ديسمبر 2022 .
- ^ كيد ميتز (20 مارس 2014). "فيسبوك يقدم "هاك"، لغة البرمجة المستقبلية". Wired . تم الاسترجاع في 15 أبريل 2014 .
- ^ جوليان فيرلاجويت؛ ألوك مينغراجاني (أبريل 2014). "Hack: لغة برمجة جديدة لـ HHVM". code.facebook.com . فيسبوك . تم الاسترجاع في 23 مارس 2014 .
- ^ جوش لوكهارت (3 أبريل 2014). "اختراق فيسبوك، HHVM، ومستقبل PHP". أوريلي ميديا . تم الاسترجاع في 2 أغسطس 2014 .
- ^ "Hack and HHVM: Type Annotations (Hack Manual)". docs.hhvm.com . تم الاسترجاع في 25 مارس 2014 .
- ^ "Hack and HHVM: Type Inference (Hack Manual)". docs.hhvm.com . مؤرشف من الأصل في 26 مارس 2014 . تم الاسترجاع في 25 مارس 2014 .
- ^ "Hack and HHVM: Unsupported PHP Features in Hack (Hack Manual)". docs.hhvm.com . مؤرشف من الأصل في 4 نوفمبر 2015 . تم الاسترجاع في 2 أبريل 2014 .
- ^ فريد إيموت (12 سبتمبر 2018). "إنهاء دعم PHP ومستقبل الاختراق" . تم الاسترجاع في 26 ديسمبر 2022 .
- ^ كريل، بول (20 سبتمبر 2017). "انسَ PHP! محرك HHVM الخاص بفيسبوك يتحول إلى Hack بدلاً من ذلك". InfoWorld . تم الاسترجاع في 6 فبراير 2019 .
- ^ فريد إيموت (11 فبراير 2019). "HHVM 4.0.0" . تم الاسترجاع في 26 ديسمبر 2022 .
- ^ "نحن الـ98.5% (والـ16%)". hhvm.com . 19 ديسمبر 2013 . تم الاسترجاع في 2 أغسطس 2014 .
روابط خارجية
- الموقع الرسمي
