HHVM
آلة HipHop الافتراضية ( HHVM ) هي آلة افتراضية مفتوحة المصدر تعتمد على الترجمة الفورية (JIT)، وتعمل كمحرك تنفيذ للغة البرمجة Hack . باستخدام مبدأ الترجمة الفورية، يُحوّل كود Hack أولًا إلى بايت كود HipHop وسيط ( HHBC )، والذي يُترجم ديناميكيًا إلى كود آلة x86-64 ، ويُحسّن، ثم يُنفّذ مباشرةً. [ 7 ] [ 8 ] وهذا يختلف عن التنفيذ التفسيري المعتاد للغة PHP ، حيث يُحوّل محرك Zend كود PHP المصدر إلى رموز تشغيلية (opcodes) تُعتبر بمثابة بايت كود ، ويُنفّذ هذه الرموز مباشرةً على وحدة المعالجة المركزية الافتراضية لمحرك Zend . [ 9 ]
تم تطوير HHVM بواسطة Meta ، ويتم استضافة شفرة المصدر للمشروع على GitHub ؛ [ 10 ] وهو مرخص بموجب شروط رخصة PHP ورخصة Zend . [ 1 ] [ 6 ]
ملخص
تم إنشاء HHVM كخليفة لمحرك تنفيذ PHP المسمى HipHop for PHP (HPHPc)، وهو مُترجم PHP إلى C++ أنشأته فيسبوك أيضًا. [ 11 ] [ 12 ] استنادًا إلى الخبرة المكتسبة، وسعيًا لحل المشكلات التي سببها HPHPc، قررت شركة Meta في أوائل عام 2010 إنشاء آلة افتراضية PHP تعتمد على JIT . شملت المشكلات المرتبطة بـ HPHPc الوصول إلى حد أقصى لتحسين الأداء، وعدم القدرة الأساسية على دعم جميع ميزات لغة PHP، والصعوبات الناجمة عن عمليات التطوير والنشر التي تستغرق وقتًا وموارد كبيرة. [ 11 ] في الربع الأول من عام 2013، توقف الإصدار الإنتاجي لموقع facebook.com عن استخدام HPHPc وانتقل إلى HHVM.
باتباع مبدأ الترجمة الفورية (JIT)، يقوم HHVM أولاً بتحويل الكود المُنفَّذ إلى لغة وسيطة ، وهي بايت كود HHBC عالي المستوى . يُعدّ HHBC تنسيق بايت كود مُصمَّم خصيصًا لـ HHVM، وهو مناسب للاستخدام من قِبَل كلٍّ من المُفسِّرات والمُترجمات الفورية. بعد ذلك، يقوم HHVM بترجمة HHBC ديناميكيًا (فوريًا) إلى كود آلة x86-64، مُحسَّنًا من خلال تحليل ديناميكي للبايت كود المُترجم. وأخيرًا، يُنفِّذ كود آلة x86-64. [ 1 ] [ 11 ] [ 13 ] ونتيجةً لذلك، يُظهر HHVM بعض أوجه التشابه مع الآلات الافتراضية المُستخدمة في لغات برمجة أخرى، بما في ذلك بيئة تشغيل اللغة المشتركة (CLR، للغة C# ) وآلة جافا الافتراضية (JVM، للغة جافا ).
يُقدّم HHVM العديد من المزايا مقارنةً بـ HPHPc. يستخدم HHVM نفس مُحرك التنفيذ عند نشره في بيئات الإنتاج والتطوير، مع دعم التكامل بين مُحرك التنفيذ ومُصحّح الأخطاء HPHPd في كلا النوعين من البيئات؛ ونتيجةً لذلك، لم تعد هناك حاجة إلى صيانة مُفسّر HPHPi (مُفسّر HipHop) بشكل مُنفصل كأداة تطوير كما كان الحال مع HPHPc. كما يُلغي HHVM عمليات البناء المُطوّلة التي يتطلبها HPHPc لتشغيل البرامج، مما يُؤدي إلى عمليات تطوير ونشر أبسط بكثير مما كانت عليه مع HPHPc. [ 1 ] وأخيرًا، تُقدّم إصدارات HHVM السابقة للإصدار 4.0 دعمًا شبه كامل للغة PHP بأكملها (كما هو مُعرّف في التنفيذ الرسمي لإصدار PHP 5.4)، بما في ذلك دعم البنيتين `<input>` و`< input>` ، وهو أمر كان مُستحيلاً مع HPHPc. [ 14 ] [ 15 ]create_function()eval()
إلى جانب HHVM 3.0، [ 16 ] أصدرت Meta أيضًا Hack ، وهي لغة مشتقة من PHP [ 17 ] [ 18 ] تُمكّن المبرمجين من استخدام كلٍ من الكتابة الديناميكية والكتابة الثابتة (مفهوم يُعرف أيضًا بالكتابة التدريجية )، وتتيح تحديد أنواع وسائط الدوال ، وقيم الإرجاع ، وخصائص الأصناف . مع ذلك، لا توفر Hack توافقًا كاملًا مع الإصدارات السابقة ، إذ أنها تُزيل العديد من ميزات PHP، مثل عبارة `input` وأسماء المتغيرات الديناميكية . [ 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، تفوقت HHVM على HPHPc بنسبة 15% تقريبًا. [ 26 ]
انظر أيضاً
ملحوظات
- ↑ فقط أدوات سطر الأوامر والبرامج الخفية الخاصة بـ Hack للتحقق من النوع ( hh_server و hh_client ) وتنسيق التعليمات البرمجية ( hh_format )والمجمعة مع HipHop Virtual Machine مكتوبة بلغة OCaml .
مراجع
- 1 2 3 4 جيسون إيفانز (9 ديسمبر 2011). "الآلة الافتراضية للهيب هوب" . منصات ميتا . تم الاسترجاع في 2 أغسطس 2014 .
- ↑ "الإصدار 3.15.0" . 28 سبتمبر 2016. تم الاطلاع عليه في 13 مارس 2018 .
- ↑"Building and installing HHVM on CentOS 7.x". github.com. Meta Platforms. May 26, 2015. Retrieved June 12, 2015.
- ↑"Building the Hack typechecker". github.com. Meta. September 10, 2014. Retrieved June 12, 2015.
- ↑"Facebook's HHVM Begins Seeing Rust Rewrite - Phoronix". Retrieved August 29, 2019.
- 12"facebook/hhvm: License". github.com. Facebook, Inc. Retrieved August 2, 2014.
- ↑Ottoni, Guilherme (June 20, 2018). "HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack". Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM. pp. 151–165.
- ↑"facebook/hhvm". github.com. Meta Platforms. Retrieved August 2, 2014.
- ↑Kaushik Pal (April 28, 2014). "PHP and Zend Engine Internals". phpbuilder.com. Archived from the original on September 15, 2014. Retrieved September 23, 2014.
- ↑HHVM source code on GitHub
- 1234Drew Paroski (November 29, 2012). "Speeding up PHP-based development with HHVM". Meta Platforms. Retrieved August 2, 2014.
- ↑"Announcement on GitHub removing HPHPc support". github.com. Meta Platforms. February 19, 2013. Retrieved May 24, 2013.
- ↑"HipHop Bytecode v1 revision 18". github.com. Meta Platforms. July 31, 2014. Retrieved May 24, 2013.
- ↑"facebook/hhvm: About upgrade to PHP 5.4 engine". github.com. May 2013. Retrieved August 2, 2014.
- ↑"facebook/hhvm: Home". github.com. Meta Platforms. May 8, 2014. Retrieved August 2, 2014.
- ↑ بول تارجان (28 مارس 2014). "HHVM 3.0.0" . فيسبوك . تم الاطلاع عليه بتاريخ 26 ديسمبر 2022 .
- ↑ كيد ميتز (20 مارس 2014). "فيسبوك يُطلق 'هاك'، لغة البرمجة المستقبلية" . وايرد . تم الاطلاع عليه في 15 أبريل 2014 .
- ↑ جوليان فيرلاجيه؛ ألوك مينغراجاني (أبريل 2014). "هاك: لغة برمجة جديدة لـ HHVM" . code.facebook.com . فيسبوك . تم الاطلاع عليه في 23 مارس 2014 .
- ↑ جوش لوكهارت (3 أبريل 2014). "اختراق فيسبوك، وHHVM، ومستقبل PHP" . دار نشر أورايلي ميديا . تاريخ الاسترجاع: 2 أغسطس 2014 .
- ↑ "Hack and HHVM: Type Annotations (Hack Manual)" . docs.hhvm.com . تم الاطلاع عليه بتاريخ 25 مارس 2014 .
- ↑ "هاك وHHVM: استنتاج النوع (دليل هاك)" . docs.hhvm.com . مؤرشف من الأصل في 26 مارس 2014. تم الاطلاع عليه في 25 مارس 2014 .
- ↑ "هاك وHHVM: ميزات PHP غير المدعومة في هاك (دليل هاك)" . docs.hhvm.com . مؤرشف من الأصل في 4 نوفمبر 2015. تم الاطلاع عليه في 2 أبريل 2014 .
- ↑ فريد إيموت (12 سبتمبر 2018). "إنهاء دعم PHP، ومستقبل الاختراق" . تم الاطلاع عليه في 26 ديسمبر 2022 .
- ↑ كريل، بول (20 سبتمبر 2017). "انسَ لغة PHP! محرك HHVM الخاص بفيسبوك يتحول إلى Hack بدلاً منها" . إنفوورلد . تم الاطلاع عليه في 6 فبراير 2019 .
- ↑ فريد إيموت (11 فبراير 2019). "HHVM 4.0.0" . تم الاطلاع عليه بتاريخ 26 ديسمبر 2022 .
- ↑ "نحن الـ 98.5% (والـ 16%)" . hhvm.com . 19 ديسمبر 2013. تم الاطلاع عليه في 2 أغسطس 2014 .
روابط خارجية
- برنامج 2011
- برنامج مجاني مكتوب بلغة C++
- برنامج مجاني مكتوب بلغة Rust
- برنامج فيسبوك
- مترجمات مجانية ومفتوحة المصدر
- برنامج مجاني مكتوب بلغة OCaml
- برنامج مجاني مكتوب بلغة PHP
- البرامج التي تستخدم ترخيص PHP
- الآلات الافتراضية القائمة على المكدس
