एचएचवीएम

हिपहॉप वर्चुअल मशीन (HHVM) एक खुला स्रोत सॉफ्टवेयर है। ओपन-सोर्स वर्चुअल मशीन समय-समय पर संकलन पर आधारित है। जस्ट-इन-टाइम (JIT) कंपाइलेशन हैक (प्रोग्रामिंग भाषा) के लिए एक निष्पादन इंजन के रूप में कार्य करता है। JIT संकलन के सिद्धांत का उपयोग करके, हैक कोड को पहले इंटरमीडिएट हिपहॉप बाइटकोड (HHBC) में रूपांतरित किया जाता है, जिसे बाद में गतिशील रूप से x86-64 मशीन कोड, अनुकूलित और मूल रूप से निष्पादित किया जाता है। यह PHP के सामान्य भाषा निष्पादन के विपरीत है, जिसमें Zend इंजन PHP स्रोत कोड को opcode में बदल देता है जो बाईटकोड के रूप में कार्य करता है, और Zend इंजन के वर्चुअल CPU पर सीधे ऑपकोड निष्पादित करता है। HHVM को मेटा प्लेटफॉर्म द्वारा विकसित किया गया है, परियोजना के स्रोत कोड को GitHub पर होस्ट किया गया है; यह PHP लाइसेंस और Zend लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।

सिंहावलोकन
एचएचवीएम को हिपहॉप फॉर पीएचपी (एचपीएचपीसी) पीएचपी निष्पादन इंजन के उत्तराधिकारी के रूप में बनाया गया था, जो कि फेसबुक द्वारा बनाया गया एक पीएचपी-टू-सी++ ट्रांसपाइल्स भी है। प्राप्त अनुभव के आधार पर और एचपीएचपीसी द्वारा पेश किए गए मुद्दों को हल करने के लक्ष्य के आधार पर, मेटा ने 2010 की शुरुआत में जेआईटी-आधारित PHP आभासी मशीन बनाने का फैसला किया। एचपीएचपीसी से जुड़े मुद्दों में आगे के प्रदर्शन में सुधार के लिए एक पठारी प्रभाव तक पहुंचना, पीएचपी भाषा की सभी विशेषताओं का समर्थन करने में एक मौलिक अक्षमता, और विशिष्ट समय- और संसाधन-खपत विकास और परिनियोजन प्रक्रियाओं से उत्पन्न होने वाली कठिनाइयाँ शामिल हैं। Q1 2013 में, facebook.com वेबसाइट के उत्पादन संस्करण ने HPHPc का उपयोग करना बंद कर दिया और HHVM पर स्विच कर दिया।

JIT संकलन सिद्धांत का पालन करते हुए, HHVM पहले निष्पादित कोड को एक मध्यवर्ती भाषा, उच्च-स्तरीय बायटेकोड HHBC में परिवर्तित करता है। एचएचबीसी विशेष रूप से एचएचवीएम के लिए बनाया गया एक बाइटकोड प्रारूप है, जो दुभाषिया (कंप्यूटिंग) और जस्ट-इन-टाइम कंपाइलर्स दोनों द्वारा खपत के लिए उपयुक्त है। अगला, HHVM गतिशील रूप से (बस-इन-टाइम) HHBC को x86-64 मशीन कोड में अनुवादित करता है, अनुवादित बायटेकोड के गतिशील विश्लेषण के माध्यम से संकलक का अनुकूलन करता है। अंत में, यह x86-64 मशीन कोड निष्पादित करता है। नतीजतन, एचएचवीएम में अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली वर्चुअल मशीनों के लिए कुछ समानताएं हैं, जिनमें सामान्य भाषा रनटाइम (सी शार्प (प्रोग्रामिंग भाषा) के लिए सीएलआर, सी # भाषा) और जावा वर्चुअल मशीन (जेवीएम, जावा (प्रोग्रामिंग) शामिल हैं। भाषा) भाषा)।

एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और एचपीएचपीडी डिबगर के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, एचपीएचपीआई (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे सॉफ्टवेयर निर्माण को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं। अंत में, 4.0 से पहले के एचएचवीएम के संस्करणों में संपूर्ण PHP भाषा के लिए लगभग पूर्ण समर्थन है (जैसा कि PHP संस्करण 5.4 के आधिकारिक कार्यान्वयन द्वारा परिभाषित किया गया है), जिसमें समर्थन शामिल है   और   निर्माण, जो एचपीएचपीसी के साथ असंभव था।  एचएचवीएम 3.0 के साथ मिलकर, मेटा ने हैक (प्रोग्रामिंग लैंग्वेज) भी जारी किया, जो PHP का व्युत्पन्न है  जो प्रोग्रामर को गतिशील टाइपिंग और स्थिर टाइपिंग (एक अवधारणा जिसे क्रमिक टाइपिंग के रूप में भी जाना जाता है) का उपयोग करने की अनुमति देता है, और डेटा प्रकार को फ़ंक्शन (प्रोग्रामिंग) तर्क (कंप्यूटर प्रोग्रामिंग), फ़ंक्शन रिटर्न मान और वर्ग गुणों के लिए निर्दिष्ट करने की अनुमति देता है। हालाँकि, हैक पूरी तरह से पिछड़ी संगतता प्रदान नहीं करता है क्योंकि यह कई PHP सुविधाओं को हटा देता है, जैसे कि   बयान और गतिशील चर (कंप्यूटर विज्ञान) नाम। सितंबर 2017 में, यह घोषणा की गई थी कि संस्करण 3.30 आधिकारिक तौर पर PHP का समर्थन करने के लिए HHVM का अंतिम संस्करण होगा, और यह कि HHVM केवल हैक को आगे बढ़ने का समर्थन करेगा। यह PHP 7 में भिन्नताओं और असंगतताओं के कारण था। फरवरी 2019 में जारी HHVM 4.0, PHP के समर्थन के बिना पहला संस्करण था।

प्रदर्शन
एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, HHVM में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर THROUGHPUT और कम विलंबता (इंजीनियरिंग) हो जाती है। Q4 2012 में, HHVM पर facebook.com के स्रोत कोड के निष्पादन ने HPHPc के साथ प्रदर्शन समानता प्राप्त की, और दिसंबर 2013 में HPHPc को लगभग 15% से भी अधिक कर दिया गया था।

यह भी देखें

 * एलएलवीएम
 * तोता आभासी मशीन
 * फालेंजर (संकलक)